$.get()方法返回值是html格式,怎么使用?

IsIs123 2017-11-24 03:39:50
js:
$.get("?act=insert", {"ame":name, "idcard":idcard, "companyid":<?php echo $id;?>, "time":tsTimeStamp},
success:function(data){
alert(data["result"]);
});

php:

if($act == 'insert'){
echo JSON(array('result' => 'ok'));
}


alert出来的结果:undefined
ps: debug时,data的内容是html源码, 在最后一行是 {'result' : 'ok'}

我就想取得这个result的值,请大神们指点一下,感激^^
...全文
1487 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
IsIs123 2017-11-27
  • 打赏
  • 举报
回复
引用 26 楼 A9925 的回复:
json_encode($arr); 或者后台直接给, if(真){ echo 1; }else{ echo 0; } 前台判断数字即可。
我都试过,不行的,最后把php方法放在了html前面,就可以了。。
  • 打赏
  • 举报
回复
json_encode($arr); 或者后台直接给, if(真){ echo 1; }else{ echo 0; } 前台判断数字即可。
IsIs123 2017-11-27
  • 打赏
  • 举报
回复
引用 22 楼 dear_Alice_moon 的回复:
我建议你可以参考我的本篇博客: AJAX数据格式之HTML 关于使用JQuery将HTML数据格式编写出来的代码,可以参见如下所示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AJAX--对是否已存在姓名进行测试</title>

<!-- 
	1、导入JQuery库
	2、获取name="username"的节点: username
	3、为username添加change响应函数
		3.1、获取username的value属性值,去除前后空格且不为空。准备发送Ajax请求。
		3.2、发送Ajax,请求检验username是否可用。
		3.3、在服务端直接返回一个html的片段:<font color="red">该用户已经被使用</font>
		3.4、在客户端浏览器把其直接添加到#message的html中。
	
 -->

<script type="text/javascript" src="${pageContext.request.contextPath}/scripts/jquery-3.2.1.js"></script>
<script type="text/javascript">
	
	$(function() {
		$(":input[name='username']").change(function() {
			var val = $(this).val();
			val = $.trim(val);
			
			if (val != "") {
				var url = "${pageContext.request.contextPath}/valiateUserName";
				//var url = "${pageContext.request.contextPath}/ValiateUserNameServlet";
				var args = {"username":val, "time": new Date()};
				
				$.post(url, args, function(data) {
					$('#message').html(data);     // $().html()函数
				});
			}
			
		});
	});
	
</script>

</head>
<body>
	
	<form action="" method="post">
		
		UserName:<input type="text" name="username" />
		<br />
		<dir id="message"></dir>
		<br />
		<input type="submit" value="Submit" />
		
	</form>
	
</body>
</html>

关于以上代码中所运用到的Java类如下所示:

package com.atguigu.ajax.app.servlets;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ValiateUserNameServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
		
		List<String> userNames = Arrays.asList("AAA", "BBB", "CCC");
		
		String userName = request.getParameter("username");
		String result = null;
		if(userNames.contains(userName)) {
			result = "<font color='red'>该用户名已经被使用</font>";
		}else {
			result = "<font color='green'>该用户可以使用</font>"; 
		}
				
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		response.getWriter().print(result);
	}
	
	
	
}

----------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------- 我建议楼主可以下载一份JQuery的API,jquery.api.3.2.1.chm这份API中对你所疑问$.get()、$.post()、$().html、$().html等方法,讲解的很清楚。 如果你想要这份jquery.api.3.2.1.chm文档,可以发私信,将你邮箱给我,我通过邮箱发送给你。
祝你好运,我也在努力学习中。
多谢你的建议哈, 我去找找系统的API,平时都是用到什么单独去查的,没有系统的学习过,看来真要做个系统的学习才行
IsIs123 2017-11-27
  • 打赏
  • 举报
回复
多谢各位抽出宝贵的时间来解答和建议,各种办法都试过,还是不行,也只会简单的调试,深层次的不太明白 我的html代码和php程序写在了同一个php文件中(我是在既存系统上新开发,就没有改变原来的结构), 所以我把新加php逻辑代码都放在了文件的最下面,我试着把方法移到html前面,居然解决了这个问题。。 可是我依然不明白原理是什么,求大侠解惑-。- 小女子十分感谢^^
Tingmmdh 2017-11-27
  • 打赏
  • 举报
回复
少侠、你要走的路还很长啊
IsIs123 2017-11-25
  • 打赏
  • 举报
回复
引用 17 楼 xuzuning 的回复:
在客户端修改当然不能解决问题,问题要解决在源头! 你的将要返回 json 的 php 程序,是不能输出任何其他内容的
下面是我的php程序的所有代码,只有简单的查询和更新DB操作,除了返回值没有输出啊 返回值部分也用了几种写法,全部不好用 if ($act == 'insert'){ InitGP(array('name', 'companyid', 'idcard')); $timeadd = time() - 86400*60; if(!empty($name)){ $name = iconv('UTF-8', 'GBK', $name); $whereTmp = " and r.fullname = '$name' "; } if(!empty($idcard)){ $whereTmp .= " and minfo.identityCard = '$idcard' "; } $sql = "SELECT 语句"; $msInfo = $db->getone($sql); if($msInfo){ $db->query("update table set value = 1 where id = ".$msInfo['id']. " limit 1"); //echo JSON(array('result' => 'ok')); echo "ok"; }else{ //print_r($_GET['jsoncallback'].'('.json_encode(array("result"=>'no')).')'); //print_r(json_encode(array('result' => 'no')));// //echo JSON(array('result'=>'no')); //echo "no"; } exit; }
xuzuning 2017-11-25
  • 打赏
  • 举报
回复
在客户端修改当然不能解决问题,问题要解决在源头! 你的将要返回 json 的 php 程序,是不能输出任何其他内容的
IsIs123 2017-11-25
  • 打赏
  • 举报
回复
多谢各位的解答哦,可是我还是不太理解其中的含义,用了$.get()请求,php返回的明明是JSON格式数据,到前台就变成页面的html源码 $.get()中设置JSON类型的话,就无法提交到后台,但不报错 用$.getJSON()请求也一样 我试过$.get, $.getJSON , $.ajax, $.post。。。。还是没有解决问题,哪位大侠指导下呀。。
IsIs123 2017-11-25
  • 打赏
  • 举报
回复
引用 13 楼 qq_34139573 的回复:
响应的数据同返回的data数据,我不太理解里面的原理,求解答^^
_明月 2017-11-25
  • 打赏
  • 举报
回复
引用 21 楼 xuzuning 的回复:
不是都跟你说了吗?要按 json 解析,就一定要输出 json 格式串! 假定你的程序文件名为 test.php 则 echo file_get_contents('http://localhost/test.php?act=insert '); 贴出结果,看看都有什么
前辈,你好,我之前写了一篇帖子:【职场交流】在公司中如何自我修炼??? ,可否给个回复,谢谢。
_明月 2017-11-25
  • 打赏
  • 举报
回复

我建议你可以参考我的本篇博客: AJAX数据格式之HTML

关于使用JQuery将HTML数据格式编写出来的代码,可以参见如下所示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AJAX--对是否已存在姓名进行测试</title>

<!--
1、导入JQuery库
2、获取name="username"的节点: username
3、为username添加change响应函数
3.1、获取username的value属性值,去除前后空格且不为空。准备发送Ajax请求。
3.2、发送Ajax,请求检验username是否可用。
3.3、在服务端直接返回一个html的片段:<font color="red">该用户已经被使用</font>
3.4、在客户端浏览器把其直接添加到#message的html中。

-->

<script type="text/javascript" src="${pageContext.request.contextPath}/scripts/jquery-3.2.1.js"></script>
<script type="text/javascript">

$(function() {
$(":input[name='username']").change(function() {
var val = $(this).val();
val = $.trim(val);

if (val != "") {
var url = "${pageContext.request.contextPath}/valiateUserName";
//var url = "${pageContext.request.contextPath}/ValiateUserNameServlet";
var args = {"username":val, "time": new Date()};

$.post(url, args, function(data) {
$('#message').html(data); // $().html()函数
});
}

});
});

</script>

</head>
<body>

<form action="" method="post">

UserName:<input type="text" name="username" />
<br />
<dir id="message"></dir>
<br />
<input type="submit" value="Submit" />

</form>

</body>
</html>



关于以上代码中所运用到的Java类如下所示:

package com.atguigu.ajax.app.servlets;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ValiateUserNameServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {

List<String> userNames = Arrays.asList("AAA", "BBB", "CCC");

String userName = request.getParameter("username");
String result = null;
if(userNames.contains(userName)) {
result = "<font color='red'>该用户名已经被使用</font>";
}else {
result = "<font color='green'>该用户可以使用</font>";
}

response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
response.getWriter().print(result);
}



}



-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------


我建议楼主可以下载一份JQuery的API,jquery.api.3.2.1.chm这份API中对你所疑问$.get()、$.post()、$().html、$().html等方法,讲解的很清楚。

如果你想要这份jquery.api.3.2.1.chm文档,可以发私信,将你邮箱给我,我通过邮箱发送给你。




祝你好运,我也在努力学习中。




xuzuning 2017-11-25
  • 打赏
  • 举报
回复
不是都跟你说了吗?要按 json 解析,就一定要输出 json 格式串! 假定你的程序文件名为 test.php 则 echo file_get_contents('http://localhost/test.php?act=insert '); 贴出结果,看看都有什么
IsIs123 2017-11-25
  • 打赏
  • 举报
回复
引用 19 楼 xuzuning 的回复:
你有 echo "ok"; 显然字符串 ok 不是 json,jq 因解析不了而转到 error 回调
我是分别用了下面四种写法都不行 //print_r($_GET['jsoncallback'].'('.json_encode(array("result"=>'no')).')'); //print_r(json_encode(array('result' => 'no'))); //echo JSON(array('result'=>'no')); //echo "no";
xuzuning 2017-11-25
  • 打赏
  • 举报
回复
你有 echo "ok"; 显然字符串 ok 不是 json,jq 因解析不了而转到 error 回调
music_65 2017-11-24
  • 打赏
  • 举报
回复
我曹、你们找bug 的能力好强,
qq_34139573 2017-11-24
  • 打赏
  • 举报
回复
qq_34139573 2017-11-24
  • 打赏
  • 举报
回复
打开浏览器开发者工具,查看下?act=insert 响应的是什么数据
IsIs123 2017-11-24
  • 打赏
  • 举报
回复
引用 10 楼 xuzuning 的回复:
浏览器直接带 ?act=insert 访问你的页面,看看返回的属什么! 注意要在查看网页源代码中看
就是$.get()方法返回的data的html代码。。
xuzuning 2017-11-24
  • 打赏
  • 举报
回复
浏览器直接带 ?act=insert 访问你的页面,看看返回的属什么! 注意要在查看网页源代码中看
IsIs123 2017-11-24
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
alert(data) 出现 html 代码,就表示你的php程序输出了不该输出的东西 你自己不去检查一下吗?
if($act == 'insert'){ echo JSON(array('result' => 'ok')); } php里就输出了这个,debug时 json中也是{'result':'no'} 但是到前台就变成前面是html代码了,就是检查不到原因才来这里请问大家的
加载更多回复(8)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧