JQuery $.getJSON() 不能正确处理回调

JQuery $.getJSON() Doesn't Work Right With Callback

本文关键字:不能 正确处理 回调 getJSON JQuery      更新时间:2023-09-26

已解决 - 等待标记(堆栈溢出延迟)

萤火虫中没有错误。我之前已经这样做了,我只是无法弄清楚为什么它不起作用。 asyncFetchContent()是从其他地方发射的。 contentController是在其他地方创建的。

function ContentController() {
}
ContentController.prototype.asyncFetchContent = function(){ 
         $.getJSON( '/content/TestContent.json', 
            function(data){
                contentController.displayContentCallback( data ); 
                } 
         );
}
ContentController.prototype.displayContentCallback = function( javascriptObject ){ 
    alert( "in callback");
    $( "#testID" ).html( javascriptObject.title );
}

Firebug 将在定义displayContentCallback()处接受断点并停止,但在您跨步后会静默失败。 javascriptObjectundefined.

提前感谢,

圭多

从手册:

重要提示:从 jQuery 1.4 开始,如果 JSON 文件包含语法错误, 请求通常会以静默方式失败。避免频繁手动编辑 出于此原因的 JSON 数据。JSON 是一种数据交换格式,具有 语法规则比 JavaScript 对象的语法规则更严格 文字表示法。例如,以 JSON 表示的所有字符串, 无论它们是属性还是值,都必须包含在 双引号。有关 JSON 格式的详细信息,请参阅 http://json.org/。

您的 JSON 是否包含错误?

contentController.displayContentCallback( data ); 不存在。 a) 它是 ContentController,而不是 contentController 和 b) 因为你使用的是原型,它必须是类似的东西

function ContentController() {
}
ContentController.prototype.asyncFetchContent = function(){ 
     $.getJSON( '/content/TestContent.json', 
        function(data){
            var x = new ContentController();
            x.displayContentCallback( data ); 
        } 
     );
}
ContentController.prototype.displayContentCallback = function( javascriptObject ){ 
    alert( "in callback");
    $( "#testID" ).html( javascriptObject.title );
}

我很确定这应该有效。