2013-02-21 254 views
0

我想從我的本地環境中使用jQuery發出ajax請求。jQuery ajax跨域請求

$.ajax({ 
     url: requestURL, 
     dataType: "json", 
     timeout: 120000, 
     success: function(data){ 
      // do something 

     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown){ 
      console.log("Instants.loadGame: error loading games: error text: " + textStatus + "; error thrown: " + errorThrown); 
     } 
    }); 

我一直在使用的dataType JSON和JSONP(因爲這是每個人都似乎是說解決了這個問題),但我得到的錯誤,無論哪種方式嘗試。對於dataType json,錯誤響應具有textStatus =「error」,errorThrown爲空。對於dataType jsonp,錯誤響應具有textStatus =「parsererror」,而errorThrown =「jQuery19002007321439859855_1361446807440未被調用」。

我知道這段代碼在與我的請求URL相同的域上運行時工作,所以我只能假設這是因爲我在本地環境中執行此操作。我已經設置了我的cross-domain.xml來允許一切。我正在使用jQuery 1.9.0。

有沒有人有任何想法?我一直在尋找這個網上很多,但沒有,幫助別人解決方案似乎爲我工作...

感謝, 希瑟

+0

哪種瀏覽器你正在使用? – Cris 2013-02-21 11:51:45

+0

'requestURL'它看起來像什麼? – Jai 2013-02-21 11:52:46

+0

和你的'requestURL'生成json。 – Jai 2013-02-21 11:54:57

回答

0

當你得到像「jQuery19002007321439859855_1361446807440當時不叫」錯誤這是因爲它不是一個正確的jsonp響應。當使用jsonp時,服務器需要是JavaScript(一個實際的腳本),並且該腳本需要調用一個作爲url一部分提供的函數(在這種情況下,函數名爲jQuery19002007321439859855_1361446807440,jQuery將映射到您提供的成功處理函數中)

最有可能的原因是服務器返回純JSON數據,但將無法正常工作。這需要數據傳遞給腳本。所以請求到服務器應該返回類似

var data = {"foo":1}; //your data here 
jQuery19002007321439859855_1361446807440(data);