2012-03-21 58 views
0

發現了與這個主題有關的其他問題,但他們是過早關閉他們的AJAX調用的人的語法錯誤,我似乎沒有做過...getJSON成功處理程序沒有被調用,沒有錯誤跡象

這裏是我的AJAX調用我的jqGrid loadComplete:

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

}, 

正如你所看到的,我只是調用一個URL來取回currentProject字符串,並相應設置標題上的jqGrid。

問題是,成功的功能永遠不會被調用!我查看了Firebug,並且可以看到服務器響應我期望的單個字符串值(在這種情況下爲「默認」)。

我在這裏錯過了什麼?我應該只使用get而不是getJSON?

回答

2

如果您預期響應實際上是JSON,則只能使用.getJSON()。在你的情況你期待一個字符串,所以嘗試:

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

您可能不需要的最後一個參數.get()設定期望的類型爲「文本」,但隨後又也許你會 - 如果你不」 t提供它jQuery將在響應類型中進行「智能猜測」,並且可能會錯誤地猜測。

請注意,在您的ajax回調中this將不會與loadComplete函數中的相同,因此您需要在ajax回調之外的變量中保留對該函數的引用,如圖所示。

+0

謝謝你的指導,我迷失在阿賈克斯選項的海洋! – Raevik 2012-03-21 22:38:32

0

檢查AJAX登陸器是否返回了有效的JSON(http://jsonlint.com/),並且頁面上沒有語法錯誤。如果情況屬實,getJSON可能會自動失敗。請參閱http://api.jquery.com/jQuery.getJSON/

相關問題