getJSON成功处理程序没有被调用而没有错误的迹象

时间:2012-03-21 21:59:35

标签: jquery ajax json jqgrid

在这个主题中发现了其他几个问题,但它们是人们过早关闭他们的AJAX调用的语法错误,我似乎没有这样做......

这是我的jqGrid loadComplete中的AJAX调用:

loadComplete : function() {                     
    $.getJSON("getCurrentProject.html", function(results){
        alert(results);
        $(this).jqGrid('setCaption',"Project: " + results);
    });                     

},

如您所见,我只是调用一个URL来获取currentProject String并相应地在jqGrid上设置标题。

麻烦的是,永远不会调用成功函数!我查看了Firebug,我可以看到服务器响应我期望的单个String值(在这种情况下为“default”)。

我在这里缺少什么?我应该只使用get而不是getJSON吗?

2 个答案:

答案 0 :(得分:2)

如果您希望响应实际上是JSON,则仅使用.getJSON()。在你的情况下,你期待一个字符串,所以试试:

loadComplete : function() {
    var $this = $(this);               
    $.get("getCurrentProject.html", function(results){
        alert(results);
        $this.jqGrid('setCaption',"Project: " + results);
    },
    "text");
},

你可能不需要.get()的最后一个参数来将期望的类型设置为“text”,但是你可能会再次 - 如果你不提供它,jQuery会对你进行“智能猜测”。响应类型,它可能猜错。

请注意,在你的ajax回调中thisloadComplete函数不同,所以你需要在ajax回调之外的变量中保留对它的引用,如图所示。

答案 1 :(得分:0)

检查AJAX着陆器是否返回有效的JSON(http://jsonlint.com/)并且页面上没有语法错误。如果是这种情况,getJSON可以无声地失败。请参阅http://api.jquery.com/jQuery.getJSON/