2009-11-16 103 views
-1

我通過傳遞輸出有效JSON作爲響應的參數來調用JSP,但$.getJson回調函數仍未被觸發。 JSP頁面輸出

{ "data": [ [ [ 1258185480000,4.39], 
       [ 1258186020000,4.31], 
       [ 1258184940000,4.39], 
       [ 1258183560000,4.39] ] ] } 

URL指向JSP頁面

的jQuery代碼

<script id="source" language="javascript" type="text/javascript"> 
$(function() { 
    alert("before"); 
    $.getJson(URL,function(json){ 
      alert("hello"); 
      var plot = $.plot($("#placeholder"), json.data, options); 
    }); 

alert("after"); 
}); 

回答

9

功能是$.getJSON,而不是$.getJson

+1

我改的getJSON和嘗試,還是回調沒有被觸發。如何驗證firebug中的json?我在Jsonlint中驗證過,來自JSP的響應是有效的JSON – 2009-11-16 08:28:40

+0

您的服務器是否發送正確的MIME類型:'application/json'或'application/javascript'? – 2009-11-16 08:34:44

+0

$阿賈克斯({ 類型: 「GET」, 網址:網址, 數據類型: 「JSON」, 成功:函數(結果){ 警報( 「成功!」);} , 錯誤:函數( XMLHttpRequest,textStatus,errorThrown){ alert(textStatus); alert(errorThrown); } }); 當我使用$ .ajax而不是$ .getJSON時,出現分析錯誤。我回來從JSP的數據是{ 「數據」:[[[1258185480000,4.39], [1258186020000,4.31], [1258184940000,4.39], [1258183560000,4.39]]]} 我已驗證JSON在jsonlint – 2009-11-16 09:32:50

1

與同樣保證Firebug從服務器獲取有效的JSON。

+0

我改變了getJSON並嘗試了,仍然沒有觸發回調。如何驗證firebug中的json?我在Jsonlint中驗證了來自JSP的響應是有效的JSON – 2009-11-16 08:30:18

+1

在Firebug的Net選項卡中,您將能夠看到所有的請求/響應。 – 2009-11-16 09:16:18

+0

$阿賈克斯( { 類型: 「GET」,網址:URL, 數據類型: 「JSON」, 成功:函數(結果){警報( 「成功!」);}, 錯誤:函數(XMLHttpRequest的, textStatus,errorThrown) {alert(textStatus); alert(errorThrown);} }); 當我使用$ .ajax而不是$ .getJSON時,得到一個解析錯誤。我從JSP獲取的數據是 {「data」:[[[1258185480000,4.39],[1258186020000,4.31],[1258184940000,4.39],[1258183560000,4.39]]]}} 我已驗證JSON在jsonlint中是正確的。如何找到解析錯誤是什麼? – 2009-11-16 09:34:53

1

我剛在這花了大約兩個小時。我發現另一篇文章討論了$.getJSON$.get之間的區別,以及它們之間的區別。所以我換出了我的getJSON()get()它工作。

(也想提一提,我也驗證了一切被從軌動作記錄和日誌記錄了我從JavaScript的回調函數可以工作。)

+1

我相信$ .getJSON和$ .get之間的不同在於內容類型(JSON vs XML)。 – 2012-01-15 02:05:26

+0

我不確定差異,但$ .get沒有返回JSON對象。多謝你們。 – 2017-04-29 05:52:24

0

$ .getJSON也就無法使用沒有合適的JSON對象進行回調處理。

+0

jQuery文檔的鏈接將極大地提高您的答案(這裏是:http://api.jquery.com/jQuery.getJSON/) – 2012-12-09 19:43:22

+0

真的,謝謝。 – 2012-12-14 02:11:43

+0

這幫了!我正在測試鉻64.0.3282.167。我真的被卡住了,因爲chrome顯示電話已經打完了,並且有所有預期的標題和格式。 然後我看到這個評論,並認爲我應該爲json找到一個linter。果然,我發現jsonlint.com,它顯示[失敗](https://jsonlint.com/?json=%7B%27hello%27:%20%27world%27%7D)它花了一段時間才意識到我有單引號。 [JSON規範](http://www.json.org/)指定雙引號。有了這個變化$ .getJOSN()按預期工作。 – 2018-03-01 02:53:09

5
$.getJSON(URL, function(data) { 
    alert("hello"); 
}); 

不過是簡寫的Ajax調用

$.ajax({ 
    dataType: "json", 
    url: URL, 
    data: data, 
    success: function(data) { 
    alert("hello"); 
    } 
}); 

Important: As of jQuery 1.4, if the JSON file contains a syntax error, the request will usually fail silently ... For example, all strings represented in JSON, whether they are properties or values, must be enclosed in double-quotes

來源:jquery.getjson docs