如何解决jQuery对跨域Web服务的ajax调用
| 我想使用jquery从客户端使用跨域Web服务function TestService() {
$.ajax({
url: \"http://service.asmx/GetGeoCompletionList\",data: { \"prefixText\":\"eka\",\"count\":\"10\",\"contextKey\":\"Trace_0$Rus\" },dataType: \"jsonp\",type: \"GET\",contentType: \"application/json; charset=utf-8\",success: function (data) {
alert(data);
},error: function (XMLHttpRequest,textStatus,errorThrown) {
alert(XMLHttpRequest.statusText);
}
});
}
在错误处理程序中,我有:
textStatus =parseerror
XMLHttpRequest的状态为“ 2”,readyState为“ 3”
错误抛出为jQuery16103495572647140...78197139 was not called
我已经花了很多小时,却无法正常工作。你能帮我吗?
更新
谢谢,我更改为GET,并修复了我的数据字符串。
服务返回有效的JSON对象。我可以在使用此服务的其他站点的Firebug上看到它。但是该站点正在使用通用的json(因为它具有一个域)。
因此,如果Web服务返回有效的JSON(而不是jsonp),那么我不能对jsonp使用相同的方法吗?从其他域转换json Web服务该怎么办?
解决方法
问题摘要:
确保您使用的是有效的JSON
正如@Quentin所提到的。
确保您正在使用GET请求,例如
提到@lonesomeday
确保来自服务器的响应是
JSONP,如此处所示
,您传递并声明为JSON的字符串不是JSON。
只能使用“ 5”个字符来引用字符串。
另外,您无法发出跨域JSON-P POST请求。
,您不能使用JSONP进行跨域POST请求。 JSONP通过向页面添加“ 6”标签来工作。
script
标记始终使用GET HTTP请求获取其源代码。您不会发布任何数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。