微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 从ie / firefox / chrome中的jquery调用跨域.net方法

我一直试图通过 JQuery从另一个调用.NET方法(asmx文件和普通的aspx文件),我无法在每个浏览器中完成工作.目前它在Firefox中运行良好,但在IE中运行不正常.

function save() {
    if (jQuery.browser.msie && window.XDomainRequest) {
        // Use XDR
        var params = "{'height':" + 10 + ",'width':" + 10 + ",'pos':'" + 10 + "'}";
        var xdr = new XDomainRequest();
        xdr.onerror = alert_error;
        xdr.ontimeout = alert_timeout;
        xdr.onprogress = alert_progress;
        xdr.onload = alert_loaded;
        xdr.timeout = 10000;
        xdr.open("post",'http://domain/reciever.asmx/setdata');
        //Tried as webservice and as a normal aspx page
        //xdr.open("post",'http://domain/default.aspx');
        xdr.send(params);
    }
    else {
        var params = "pos=" + positions + "&width=" + screenWidth + "&height=" + screenHeight;
        var myAjax = new jQuery.ajax(
        "http://domain/default.aspx",{
            type: 'post',cache: false,crossDomain: true,data: params
        });
    }
}

在服务器端,web.config具有:

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
</httpProtocol>

和webservice

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string setdata(int width,int height,string pos)

aspx页面返回:

Response.Clear();
Response.ContentType = "text/plain";
response.addheader("Access-Control-Allow-Origin","*");
Response.End();

提琴手说:
fiddler在会话#2565中检测到协议违规.
内容长度不匹配:请求标头指示38个字节,但客户端发送0个字节.所以我相信它是“Access-Control-Allow-Origin”,但我已经设置了(据我所知).

有人可以帮我理解我做错了什么.

解决方法

出于某些安全原因,某些浏览器不允许跨域Ajax调用(使用XmlHttpRequest对象进行调用).

解决方案是使用JSONP调用而不是ajax调用. JSONP通过发出适合脚本文件的请求来避免这种情况.通过使用JSONP,以下事情可以使跨域请求成为可能,

1.浏览器首先创建一个新的脚本标记以注入HTML DOM,而不是访问XHR对象.

2.脚本标记的URL设置为您希望获取/发布(使用HTTP GET)数据的URL.

3.脚本标记被注入页面,导致……

4.请求被发送到服务器,即使它是跨域的

5.服务器以JavaScript函数调用的形式返回数据

6.浏览器接收数据并执行函数调用

请参阅下面的网址以获取实施细节,

http://www.codeproject.com/Articles/78757/Making-Cross-Domain-jQuery-AJAX-Calls.aspx

http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide

希望这绝对可以帮助你……

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐