我对这个ajax请求进行了编码,但不知道为什么success方法中的代码不起作用
即使在chrome浏览器的网络中出现状态:200ok
这是ajax代码:
$("#noti_filter").click(function(){
//first add item into cart
var item_id = 'test';
$.ajax({
method:"POST",
//contentType:"application/json",
url:"../html/notifies.php",
data:{product_id:item_id},
dataType: "json",
success:function(data,state) {
console.log(data);
console.log(state);
alert('ajax success');
}
});
});
问题在于警报或控制台更不用说其他代码
success:function(data,state)
{
console.log(data);
console.log(state);
alert('ajax success');
}
答案 0 :(得分:2)
来自 ajax events 文档:
<块引用>成功(本地事件)
只有在请求成功(服务器没有错误,数据没有错误)时才会调用此事件。
由于您的服务器以 200 OK
响应,这意味着我们可以解决服务器的问题并留下数据错误。
来自 ajax 文档(仅相关部分):
<块引用>数据类型
您期望从服务器返回的数据类型。
可用的类型(以及作为第一个参数传递给成功回调的结果)是:
"json":将响应计算为 JSON 并返回一个 JavaScript 对象。 ... JSON 数据以严格的方式解析;任何格式错误的 JSON 都会被拒绝并引发解析错误。从 jQuery 1.9 开始,空响应也会被拒绝;服务器应改为返回 null 或 {} 响应。 (有关正确的 JSON 格式的更多信息,请参阅 json.org。)
所以很可能服务器返回的数据被ajax拒绝,在这种情况下应该抛出解析错误。
这是一个如何实现错误处理程序的示例:
$("#noti_filter").click(function(){
//first add item into cart
var item_id = 'test';
$.ajax({
method:"POST",
//contentType:"application/json",
url:"../html/notifies.php",
data:{product_id:item_id},
dataType: "json",
success: function(data,state) {
console.log(data);
console.log(state);
alert('ajax success');
},
error: function(err) {
console.log(err.responseText); // <-- printing error message to console
}
});
});
答案 1 :(得分:1)
您将数据类型定义为 json
。 dataType
是您期望从服务器返回的数据类型。您的服务器是否响应 json
?
我假设您的 200-ok-server-request 的结果可能不是 json
格式,因此解析失败并且您的 success
-callback 未被调用。您可以使用 error
回调函数捕获错误。
之后你就知道确切的原因了。