2013-05-01 53 views
0

我正在嘗試使用jQuery向其他服務器發送AJAX請求。我在本地經營。如果我使用HTML數據類型,我會得到經典的Origin http://127.0.0.1 is not allowed by Access-Control-Allow-Origin。所以,我開始使用JSONP請求:使用AJAX從另一臺服務器接收數據

$.ajax({ 
    url: 'SomeRemoteServer/SomeFile', 
    dataType: 'jsonp', 
    success: function(data) { 
     // do stuff 
    }, 
    error: function(d,msg) { 
     alert(msg); 
    } 
}); 

的擦肩而過誤差爲parsingerror和Chrome JS調試器輸出Resource interpreted as Script but transferred with MIME type text/html。仔細查看網絡上的這個錯誤後,我發現錯誤來自於服務器,而不是我的腳本(它應該發回MIME類型application/json或類似的東西)。

好吧,似乎服務器正在發送一些東西......我想趕上響應和自我處理解析。這是可行的嗎?如果是的話如何?我試圖$.ajax()選項converters但沒有成功......

+2

我的問題,如果服務器輸出的text/html那麼你肯定服務器想讓你送JSONP請求給它? – Ejaz 2013-05-01 16:12:14

+0

根據我的經驗,「資源解釋爲腳本,但是以MIME類型text/html'傳輸」是*警告*,不是錯誤。如果你的代碼不能正常工作,肯定還有其他的錯誤。 (例如,來自服務器的JSONP響應是否爲有效腳本?)JSONP響應是*腳本*;它不是JSON(儘管它可能包含JSON),並且不應該使用'application/json'。 – apsillers 2013-05-01 16:14:10

+0

@apsillers:顯然這是無效的。我想在插入我的代碼之前甚至檢查它的有效性。我只想在url的html源代碼上使用一些正則表達式。 – vanna 2013-05-01 16:20:18

回答

0

我解決了使用dataFilter

$.ajax({ 
    url: 'SomeRemoteServer/SomeFile', 
    dataType: 'jsonp', 
    dataFilter: function(data) { 
     // will run ok ! 
    } 
    success: function(data) { 
     // will fail 
    }, 
    error: function(d,msg) { 
     // will result in parsing error 
    } 
}); 
相關問題