2012-01-02 59 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

相关问题