2012-05-30 55 views
0

我想從.jsp頁面獲取JSON對象。但我不知道該怎麼辦。我已經使用了一段時間了,但是我找不到getJSON函數的作用。我沒有從getJSON函數獲取任何數據

它返回JSON對象的字符串表示嗎?

或者是傳遞給函數JSON對象的參數'json'?

功能(第二個參數)是否與使用XMLHttpRequests時寫入的功能相同?換一種說法;這個函數是異步部分嗎?

帶有「JSON stuff」的警報不打印。

<script type="text/javascript" src="jquery-1.7.2.js"></script> 
<script type="text/javascript"> 
    function checkUni() { 

     var URL = "http://localhost:8080/GradSchoolApp/test.jsp"; 

     var jso = $.getJSON(URL, function(json) { 
      alert("JSON stuff " + json.name); 
     }); 

     alert(jso); 
     //alert(jso.name); 

    } 

回答

3

有幾件事情要檢查:

是web應用程序也運行在本地主機:8080?如果沒有,您可能會遇到同樣的原產地政策,在這種情況下,您需要編碼爲jsonp。

您還應該檢查螢火蟲/檢查元素/任何以確保您實際上從您的請求返回的東西。您可以在網絡或資源選項卡中執行此操作,具體取決於您使用的瀏覽器。在警報之前在你的腳本中附加一個斷點並檢查json對象,看看是否有任何東西被返回。

第二個警報不會觸發,因爲當您調用它時,json對象不存在。

+0

第二次警報火災... 並且是在localhost:8080。 – stianlp

+0

我剛剛檢查過螢火蟲,我沒有收到任何要求。那是什麼意思? – stianlp

+0

如果你直接去test.jsp,你會得到什麼? –

2

getJSON的相關文檔是here。回調參數(您名爲json)是已解碼的數據(即它是一個JavaScript對象,而不是字符串)。

至於爲什麼你的警報沒有做任何事情,請參閱查爾斯班德斯的答案。爲了更好地調試您的代碼,您還可以使用console.log(可在Firebug或Chrome上運行)和/或將處理程序設置爲ajaxError - 因此,如果問題出在您的請求上,您可能會收到錯誤通知(而不是瀏覽器忽略它默認)。

2

它返回JSON對象的字符串表示嗎?

該響應將作爲JSON格式來。 getJSON方法是數據類型爲json的jQuery ajax的簡短形式。數據類型決定什麼是格式以從ajax調用接收結果

是傳入函數JSON的參數'json' 對象?

你的回調函數中的變量json將得到你的ajax調用的響應。數據應該在有效的JSON文檔中(如果你的服務器頁面正確地返回)

這個函數是異步部分嗎?

正如我之前告訴過你的,getJSON是jquery ajax的簡寫形式,其數據類型爲Json。 它是異步的。