背景
在此Javascript代码中,永远不会触发success
事件:
$.ajaxSetup({cache:false,
success:function(d) {
console.log("ok from setup with data "+d.toSource())
},
complete:function(xhr,ts){
console.log("Ajax finished reponse:"+xhr.responseText)
},
error:function(jqXHR, textStatus, errorThrown){
console.log("Error")
}
});
$.getJSON("test2.php",{},function(data){
//some code here
});
当我这样做时,它起作用:
$.ajaxSetup({cache:false,
complete:function(xhr,ts){
console.log("Ajax completado con:"+xhr.responseText)
},
error:function(jqXHR, textStatus, errorThrown){
console.log("Error")
}
});
$.getJSON("test2.php",{},
function(data){
//some code here
}).success(function(d){
console.log("success applied directly, data "+d.toSource())
}
);
在这两种情况下,始终触发完整事件,并且永远不会出现错误。
然而,在第二个代码中,成功被解雇了。
显然,对于.get()
方法,它是相同的。
<?php header("Content-Type:application/json;charset=utf-8");
//or whatever text/x-json text/plain, even text/html, jquery do the dirty job
echo json_encode(array("stat"=>"1")) ?>
我的目标:
问题很奇怪,有什么想法吗?
我读了所有这些问题:
而且我很确定这些都不是我的问题。
答案 0 :(得分:5)
查看ajaxSetup文档:http://api.jquery.com/jQuery.ajaxSetup/
注意:全局回调函数应设置为各自的 全局Ajax事件处理程序方法-ajaxStart(),. ajaxStop(), .ajaxComplete(),. ajaxError(),. ajaxSuccess(),. ajaxSend() - 而不是 在$ .ajaxSetup()的选项对象中。
我认为那是你的问题。
更新
如果您希望您的ajax处理程序在页面上任何 ajax请求是全局的,请执行以下操作:
$(document).ajaxSuccess(function(d){
console.log("ok from setup with data "+d.toSource());
});