$.ajax({
type: POST,
url: getSecondClassification,
data: {
"sort2": sort2,
"sort3": sort3)
},
dataType: json, success: function(sort) {
$("#noneSelect").remove();
var optionstring = "";
for (var i in sort) {
optionstring += "<option value=\"" + sort[i].classId + "\" >" + sort[i].className + "</option>";
}
$("#secondtype").html(optionstring);
$("#build").removeAttr("disabled");
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
// $("#p_test").innerHTML = "there is something wrong!";
// alert(XMLHttpRequest.status);
// alert(XMLHttpRequest.readyState);
// alert(textStatus);
}
});
出现任何错误都会跳到 error 函数里
举例说明一些错误原因:
1. dataType 错误
类型错误: 后台返回的 dataType 类型和前台写的不一致会跳入 error 比如返回的是字符串 dataType: json, 在服务器上, 有时会出现问题, 进入 error
格式错误: jquery1.4 之后对 json 的格式要求非常严格, json 格式错误也会跳入 error.{"test":1} 注意格式
有时, 在不需要返回值的情况下, 扔按模板格式, 设置了 dataType:"json", 参数; 这时候, ajax 传值正确时, 出现 200 返回成功状态下报错的特殊情况
2. async 请求同步异步问题
async 默认是 true(异步请求), 如果想一个 Ajax 执行完后再执行另一个 Ajax, 需要把 async=false
例如, 你用 post 请求传值到另一个页面后台, 但是页面一加载你的 ajax 就已经执行过了, 传值接收是在后台才完成的, 这时候就请求不到数据, 所以可以考虑把 ajax 请求改为同步试试
3. data 不能不写
data 为空也一定要传 "{}"; 不然返回的是 xml 格式的并提示 parsererror. data:"{}"
parsererror 的异常和 Header 类型也有关系及编码 header(Content-type: text/html; charset=utf8);
4. 传递的参数
必须是 ajax 支持的编码格式
5. URL 路径问题
路径不能有中文
用 error 调试错误信息:
可以 alert 出来, 查看具体是哪里出错了
具体参数:
XMLHttpRequest:XMLHttpRequest.readyState: 状态码的意思
0 - (未初始化) 还没有调用 send() 方法
1 - (载入) 已调用 send() 方法, 正在发送请求
2 - (载入完成)send() 方法执行完成, 已经接收到全部响应内容
3 - (交互) 正在解析响应内容
4 - (完成) 响应内容解析完成, 可以在客户端调用了
XMLHttpRequest:XMLHttpRequest.status:
textStatus: 错误原因
null timeout error notmodified parsererror
errorThrown:(可选) 捕获的错误对象
来源: http://www.bubuko.com/infodetail-2482487.html