2012-08-15 59 views
1

我是新來的AJAX,並試圖找出如何做一個JSONP跨域調用。我不完全確定下面的代碼有什麼問題。在Firebug NET控制檯中,我可以看到響應正常(完整的HTML頁面),並且HTML選項卡也顯示正常。我收到一個「語法錯誤」,指向URL /?jsonp = jQuery17109722891130251606_1345069208686 & _ = 1345069209298。簡單的Ajax錯誤?

我在那裏有一個錯誤部分,但只是閱讀.ajax裏面的錯誤函數在使用JSONP時無法正常工作?

下面的代碼:

$.ajax({ 
    url: 'http://www.google.com', 
    type: 'GET', 
    dataType: 'jsonp', 
    jsonp: 'jsonp', 
    crossDomain: true, 
    complete:function(jsonp){ 
    $('#test').append(jsonp); 
} 
}); 

我在本地運行此,嘗試了多種不同的URL ....任何意見或解釋?謝謝! 忘了提及textStatus也拋出parsererror?

+0

你確定你打電話的服務器實際上支持JSONP嗎? – 2012-08-15 22:33:12

+0

取代充滿:使用成功: – Shenaniganz 2012-08-15 22:33:18

+0

[什麼是JSONP?](http://remysharp.com/2007/10/08/what-is-jsonp/) – kapa 2012-08-15 22:33:36

回答

2

在這裏

complete:function(jsonp){ 
    $('#test').append(jsonp); 
} 

你想一個jqXHR對象追加到DOM元素。看看這個:http://jsfiddle.net/TkUBz/

你需要做的是使用success屬性,如:

/*complete*/ 
    success:function(data){ 
     $('#test').append(data); 
    } 

現在,您看到的語法錯誤是因爲你加載google's頭版,這包含一個JavaScript代碼,瀏覽器在將HTML數據附加到#test元素時嘗試執行,並且由於不同的原因JavaScript代碼無法在您的頁面上工作,因此代碼失敗並且您看到語法錯誤。

+0

我不知道我應該如何使用它?我正在嘗試將信息附加到頁面上? – Aaron 2012-08-15 22:37:13

+0

@Aaron,我剛剛舉了一個'成功'屬性的例子。在你的情況下,你應該在代碼中用'success'替換'complete'。 – Vlad 2012-08-15 22:39:01

+0

嘿弗拉德,這不會允許跨域。我已經嘗試了使用和不使用JSONP信息的確切代碼,並且仍然可以在.NET面板內正確接收所有內容,但是會出現語法錯誤。儘快刪除AJAX塊沒有錯誤。奇怪的 – Aaron 2012-08-15 22:42:21