gri*_*egs 163 ajax jquery web-services
我有以下网络服务;
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
Run Code Online (Sandbox Code Playgroud)
它是库存标准,没有对类装饰器进行任何改动.
我有这个jQuery方法;
var webMethod = "http://localhost:54473/Service1.asmx/HelloWorld";
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json",
url: webMethod,
success: function(msg){ alert(msg.d); },
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud)
这是一个后期操作,因为稍后我需要将数据发布到它.
当我执行jQuery时,我得到一个"无传输"错误.
我还应该提到的一点是,jQuery存储在我的机器上的一个简单的HTML文件中,而WebService也在我的机器上运行.
HTML页面上没有代码,它只是一个网页,而不是ac #project或任何东西.
任何人都可以指出我在正确的方向吗?
小智 252
添加这个: jQuery.support.cors = true;
它支持jQuery中的跨站点脚本(我相信在1.4x之后引入).
我们使用了一个非常旧版本的jQuery(1.3.2)并将其换成了1.6.1.一切都在工作,除了.ajax()调用.添加以上行修复了问题.
no.*_*ing 95
如果你的jQuery页面没有被加载,http://localhost:54473
那么这个问题可能是因为你试图提出跨域请求.
更新1 看一下这篇博客文章.
更新2 如果这确实是问题(我怀疑它是),您可能想要检查JSONP作为解决方案.以下是一些可能有助于您入门的链接:
bsu*_*tor 26
我在页面上遇到了同样的错误,并添加了这些行:
<!--[if lte IE 9]>
<script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js'></script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
它最终适用于我;)IE9中没有更多的错误.
所有提议的答案都不适合我.我的用例略有不同(在IE9中执行ajax获取S3 .json文件).设置jQuery.support.cors = true;
摆脱了No Transport
错误,但我仍然得到Permission denied
错误.
对我有用的是使用jQuery-ajaxTransport-XDomainRequest来强制IE9使用XDomainRequest.使用它不需要设置jQuery.support.cors = true;
我通过在dataType ='json'的地方使用dataType ='jsonp'来解决它
归档时间: |
|
查看次数: |
166657 次 |
最近记录: |