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的值,请大神们指点一下,感激^^
$.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的值,请大神们指点一下,感激^^
$.get("?act=insert", {"ame":name, "idcard":idcard, "companyid":<?php echo $id;?>, "time":tsTimeStamp},
success:function(data){
alert(data["result"]);
},'json');
我之前加过'json', 就不走后台了, 更走不到alert部分了
还有{"ame":name,......这里是故意写成ame的?
$.post() 加 ‘json’ 参数会
他们都是 $.ajax 方法的简写形式,自然不会面面俱到
你也可以用 $.getJSON() 按 GET 方式获取 json
我这些代码都写在同一个php文件中,而且还有其他的$.get()方法也是这么写的,都没有问题,唯独这个方法出了问题,
刚做js,不是很明白其中的原理, ame应该是name,拷代码时拷错了,在php后台有对数据转码
$name = iconv('UTF-8', 'GBK', $name);
用了$.getJSON() 方法也是没有提交到后台,走不进回调函数
你自己不去检查一下吗?
if($act == 'insert'){
echo JSON(array('result' => 'ok'));
}php里就输出了这个,debug时 json中也是{'result':'no'}
但是到前台就变成前面是html代码了,就是检查不到原因才来这里请问大家的
注意要在查看网页源代码中看
就是$.get()方法返回的data的html代码。。
响应的数据同返回的data数据,我不太理解里面的原理,求解答^^
$.get()中设置JSON类型的话,就无法提交到后台,但不报错
用$.getJSON()请求也一样
我试过$.get, $.getJSON , $.ajax, $.post。还是没有解决问题,哪位大侠指导下呀。。
你的将要返回 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;
}
显然字符串 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";
则 echo file_get_contents('http://localhost/test.php?act=insert ');
贴出结果,看看都有什么
我建议你可以参考我的本篇博客: 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文档,可以发私信,将你邮箱给我,我通过邮箱发送给你。
所以我把新加php逻辑代码都放在了文件的最下面,我试着把方法移到html前面,居然解决了这个问题。。
可是我依然不明白原理是什么,求大侠解惑-。- 小女子十分感谢^^