2012-01-02 86 views
4

這裏是我的代碼

$.ajax(
{ 
    type: "GET", 
    url: 'http://devserver:7995/stdpart/services/GetAllPartsWithFilter', 
    dataType: 'json', 
    data: jsonPartsData, 
    success: fnGetPartsData, 
    error: PartsLoadError 
}); 

這是代碼IE8工作正常,但在Firefox和Chrome瀏覽器越來越失敗。當我檢查XHR對象時,它表示狀態碼代碼爲0.我檢查了所有其他問題,但沒有一個能幫助我確定問題。

讓我知道,如果我在這段代碼中做了任何錯誤的事情。如果$ .ajax有一些兼容性問題,那麼請建議一些與它相同的東西。

更新: 我們發現一個解決方案在 http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html

它使用動態腳本的概念。我們在我們的應用程序中做了同樣的事情,那麼現在似乎每件事情都在起作用。尚未完全分析。

+2

您確定要返回有效的JSON嗎?我遇到過IE瀏覽器評估格式錯誤的JSON(例如'{「key」:「value」,}'),其他瀏覽器出現故障(應該如此)。任何錯誤消息? – Daff 2012-01-02 08:15:29

+0

什麼是錯誤,什麼是jsonPartsData? – 2012-01-02 08:15:59

+1

實際上,除非您有特定的設置,否則您無法對外部網站進行Ajax調用。 – 2012-01-02 08:19:33

回答

6

這是因爲Same origin policy。你不能使用ajax來調用外部網站。如果你真的想使用,你必須使用JSONP。或者你可以使用serverside代理。意味着,在服務器端調用外部站點,並對該web服務執行ajax調用。


UPDATE:

建立在你的網站,並在將WebMethod放webserveice下面的代碼

string proxyURL = "http://devserver:7995/stdpart/services/GetAllPartsWithFilter"; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(proxyURL); 
request.Method = "GET"; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

if (response.StatusCode.ToString().ToLower() == "ok") 
{ 
    Stream content = response.GetResponseStream(); 
    StreamReader contentReader = new StreamReader(content);   
    return contentReader.ReadToEnd(); 
} 
return string.Empty; 

然後訪問使用你的代碼的本地服務。

for more information please refer this link

+1

或者使用'Access-Control-Allow-Origin 'header(儘管在所有瀏覽器中都不支持)。 – 2012-01-02 08:43:08

+1

如果你有,請分享一些示例代碼。我已經嘗試過幾個例子,但沒有爲我工作:( – Dinesh 2012-01-02 10:27:15

+1

如果你想使用'JSONP',你或者我需要更改服務器代碼。最簡單的方法是使用serverside代理服務器。請嘗試此鏈接瞭解更多詳細信息如何使用serverside代理服務器,請參閱更新後的答案 – 2012-01-02 11:40:29

0

我認爲你的代碼有什麼問題。

請參閱Pure JavaScript Ajax calls

不同的庫實現不同方式的Ajax的API。所以,在你的情況下,它必須是你使用的jQuery版本的問題。

請嘗試純粹的JavaScript Ajax調用,看看它是否適用於所有瀏覽器。如果確實如此,那麼jquery存在一個問題,您不想花費時間。如果沒有,那麼你錯過了一些東西。

+0

也有純JavaScript,我得到同樣的問題。我通過添加Access-Control-Allow-Origin和一些其他參數來自定義標題。沒有任何工作:( – Dinesh 2012-01-02 10:29:08

+0

你可以確認純JS JS Ajax DOES在IE中工作而不在Chrome/ff/safari中工作? – riship89 2012-01-02 11:28:15

+0

在IE中工作,但在Firefox和Chrome中保持失敗 – Dinesh 2012-01-03 03:57:22

相關問題