0
我正在使用AJAX調用來從服務器獲取HTML的應用程序。 當我在服務器上運行它時,一切正常。Jsonp跨域AJAX
但是當我在本地主機上運行時,出現了'Access-Control-Allow-Origin'錯誤。 我看着周圍,似乎使用jsonp可能是解決方案。
所以,我的Ajax調用看起來像這樣:
$.ajax({
url: url,
dataType: 'jsonp',
crossDomain: true,
type: 'GET',
success: function(data){
// should put the data in a div
},
error: function(){
//do some stuff with errors
}
});
我得到的html從服務器,但我一直有這樣的錯誤:
Uncaught SyntaxError: Unexpected token <
有沒有辦法來包裝JSONP響應在HTML?
謝謝!
)抓住它,事實是,我得到的數據回來了..但帶有「語法錯誤」..所以所有的代碼都在客戶端..但我無法使用它。 –
@GuillaumeleFloch是的,你可能會返回一些含義的數據,它必須導致語法錯誤,請檢查jsonp的工作方式。 – xdazz
@GuillaumeleFloch獲取語法錯誤的原因是JSONP利用動態連接的'
您不能使用JSONP來獲取HTML文檔。您需要將您的HTML包裝到JavaScript變量中。 JSONP有一些非常具體的要求,使其能夠正常工作,包括回調函數/屬性。如果您不控制承載目標頁面的服務器,則無法使其工作。這是一項安全措施,可防止隨機頁面通過AJAX呼叫從您登錄的網站竊取您的個人信息。
UPDATE
我更仔細閱讀你的問題。這聽起來像是你的問題在於你在一個沒有問題的開發環境中。 JSONP不是答案,因爲爲了使頁面在開發過程中運行起來很麻煩。您應該創建目標HTML的本地副本,並使用相對或服務器絕對URL(例如
"/the/page/i/need.html"
而不是"http://myserver.com/the/page/i/need.html"
來源
2012-09-06 03:35:23 Pete
不,這不是一個開發工作...我需要那個在生產中運行.. –
@GuillaumeleFloch你在'localhost'上運行你的生產站點嗎?你說它在服務器上工作正常。 – Pete
是的,我首先在服務器上開發了應用程序。但現在,我想把它作爲一個移動應用程序來封裝,這就是爲什麼我要在本地主機上測試它。 –