jQuery ajax成功事件奇怪的是没有在ajaxSetup上工作

时间:2012-04-03 21:59:43

标签: javascript jquery ajax

背景

  • 使用jQuery 1.7客户端
  • PHP服务器端
  • 使用带有json_encode php函数的json响应
  • 内容类型标题是正确的,其中任何一个都可以:text / plain,text / x-json,application / json。
  • 我的php代码没有抛出任何错误
  • 正在使用Firefox 11
  • 使用js控制台和其他网站的开发者工具
  • HTTP / 1.1 200确定

在此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代码:

<?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")) ?>

我的目标:

  1. 我想向所有ajax请求发起相同的成功事件
  2. 我想在成功事件中使用请求返回的json 数据,如果可能的话,不将原始jqXHR responseText再次转换为json < / LI>

    问题很奇怪,有什么想法吗?


    我读了所有这些问题:

    而且我很确定这些都不是我的问题。

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());
});