2013-08-01 197 views
0

我在使用jQuery AJAX調用時遇到了一些問題。我絕不是一個專家,但我知道jQuery足以應付簡單的任務。jQuery ajax調用失敗

這裏是我的代碼 -

var id = 123; 
    var url = "/test.aspx?id=" + id; 
      $.getJSON(url, function (data) { 
       alert(1); 
      }); 

的問題是該警示(1)未擊中。當我手動檢查[domain] /test.aspx?id=123時,我收到了JSON數據。我在這裏做錯了什麼,或者我該如何診斷這個問題?

謝謝

+3

你有什麼錯誤嗎? – putvande

+0

正如url建議,這不是一個跨域請求,對不對? –

+3

你可以在你的函數中加入'.fail(function(){console.log(「error」);})'來檢查失敗。 – putvande

回答

0

這有點奇怪,但我不得不在請求中指定JSON數據類型。

var id = 123; var url =「/ echo/json /」; $ .getJSON(url,「json」,function(data){ alert(「hello」); });

我從http://api.jquery.com/jQuery.getJSON/得到了JSON的想法。這個頁面上的例子是用於PlainObject的。我的代碼中的url試圖解析JSON作爲PlainObject但失敗。在關閉getJSON的括號之後,我使用了.success和.error來找出問題。要查看如何使用成功和錯誤滾動到jquery.com鏈接的底部。

0

你的例子工作得很好。下面是一個例子的jsfiddle對其進行測試(使用echo服務):

var id = 123; 
var url = "/echo/json/"; 
$.getJSON(url, function (data) { 
    alert("hello"); 
}); 

http://jsfiddle.net/QyfCF/1/

+0

它適合你。對我來說,我必須指定一個JSON數據類型才能工作。詳情請參閱我的回答。 – Gabbar

0

這看起來像比你所提供的代碼之外的其他地方來的問題。要解決問題,我想嘗試做這樣的事情......

var id = 123; 
var url = "/test.aspx?id=" + id; 
console.log("before"); 
$.getJSON(url, function (data) { 
    console.log("inside"); 
}); 
console.log("after"); 

這樣,你可以看到代碼是否真的曾經到達的JSON請求,因爲你會在控制檯中看到「之前」,你可以看看它是否進入內部,因爲你會看到控制檯中的「內部」,等等。

此外,您可能傳遞到$.getJSON的url不是正確的url。您可能想事先沒有使用斜槓來嘗試它,或者可能傳遞完整的網址以確保您引用的是正確的位置。

+0

感謝您的解釋。我嘗試過之前和之後,並認爲這個問題是單獨使用getJSON。我用.error和.success,並認爲這是一個數據類型問題。請參閱我的解答。 – Gabbar

0

確保您的JSON是有效的JSON,例如通過運行它雖然JSONLint。 當請求的JSON無效時,JQuery的.getJSON().ajax()會以靜默方式失敗。

+0

JSON有效。這只是該功能無法解析,我不得不指定它。檢查我的答案。 – Gabbar