这个问题消耗了我的很多时间。
原来是因为.php文件中的 echo echo json_encode($k); 后面少加了个exit;
因为echo echo json_encode($k); 之后还是有其他内容的,所以ajax获取到除了json格式以外的数据。
这个时候会触发error方法:
error: function(XMLHttpRequest, textStatus, errorThrown){
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
}
分别弹出: 200, 4, parsererror
parsererror 表示数据转化的过程出现错误, 原因是请求的是json数据,然而返回了除json之外的数据。
XMLHttpRequest.status 值表示含义:
· 200 - OK 一切正常,对GET和POST请求的应答文档跟在后面。
·201 - Created 服务器已经创建了文档,Location头给出了它的URL。
· 202 - Accepted 已经接受请求,但处理尚未完成。
· 203 - Non-Authoritative Information 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝,非权威性信息(HTTP 1.1新)。
· 204 - No Content 没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
· 205 - Reset Content 没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容(HTTP 1.1新)。
· 206 - Partial Content 客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1新)。
XMLHttpRequest.readyState 值表示含义:
0 为初始化——open函数还没调用。
1 正在加载——open函数已调用,但send函数没有调用。
2 已加载 ——send函数已调用。
3 正在交互——服务器正在发送响应。
4 完成 ——服务器完成发送响应。