Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于跨域ajax的XDomainRequest给出了无法理解的错误-清空错误_Javascript_Jquery_Ajax_Xdomainrequest_Xdr - Fatal编程技术网

Javascript 用于跨域ajax的XDomainRequest给出了无法理解的错误-清空错误

Javascript 用于跨域ajax的XDomainRequest给出了无法理解的错误-清空错误,javascript,jquery,ajax,xdomainrequest,xdr,Javascript,Jquery,Ajax,Xdomainrequest,Xdr,我有以下ajax调用,应该调用不同域上的页面: if ($.browser.msie && window.XDomainRequest) { // Use Microsoft XDR var xdr = new XDomainRequest(); xdr.open("post", "https://different-domain.aspx"); xdr.onload = funct

我有以下ajax调用,应该调用不同域上的页面:

if ($.browser.msie && window.XDomainRequest) {

            // Use Microsoft XDR
            var xdr = new XDomainRequest();
            xdr.open("post", "https://different-domain.aspx");
            xdr.onload = function() {
                alert(xdr.responseText);// XDomainRequest doesn't provide responseXml, so if you need it:                       

            };
            xdr.onerror = function() {
                alert("Error " + xdr.responseText);
            };
            xdr.onprogress = function() {
                alert('errored out');
            };

            var params = "fileName="+ file+"&param02="+ param02+"&param03="+ param03+"&param05="+ param05+"&param08="+ param08+"&param11="+ param11;
            alert(params);
            xdr.send(params);
        } 
执行onerror方法中的代码部分,但xdr.responseText为nothing-empty。有人能指出我可能做错了什么吗


我正在尝试调用不同域上的ajax页面-一个快捷方式是将Internet安全设置更改为“允许跨不同域”,但我不想告诉我的用户这样做

我相信您遇到了同源策略,在该策略中,您不允许创建到与当前域不同的域的AJAX请求。这是有办法的;您可以创建一个服务器端脚本用作代理,或者尽可能使用
JSONP
(需要正确设置远程服务器才能使
JSONP
工作)

既然您用jQuery标记了您的问题,我将给您一个如何在jQuery框架内执行此操作的示例(这是使用jQuery的主要原因之一,它使AJAX变得简单):

$.ajax({
网址:,
键入:“post”,
数据类型:“jsonp”,
成功:函数(serverResponse){},
错误:函数(jqXHR,textStatus,errorshown){}
});
这将使用
JSONP
来执行跨域请求

数据类型:“jsonp”

使用JSONP加载JSON块。向 结束URL以指定回调。通过附加 一个查询字符串参数“=[TIMESTAMP]”指向URL,除非缓存 选项设置为true.Docs for
$.ajax()

资料来源:


在通过jQuery发出AJAX请求时,您可以设置更多选项,请查看文档以查看所有选项。

我相信您遇到的是同一来源策略,其中不允许您向不同的域创建AJAX请求。有一些方法可以解决此问题;您可以创建一个服务器端脚本来如有可能,可用作代理或使用
JSONP
(需要正确设置远程服务器才能使
JSONP
正常工作

既然您用jQuery标记了您的问题,我将给您一个如何在jQuery框架内执行此操作的示例(这是使用jQuery的主要原因之一,它使AJAX变得简单):

$.ajax({
网址:,
键入:“post”,
数据类型:“jsonp”,
成功:函数(serverResponse){},
错误:函数(jqXHR,textStatus,errorshown){}
});
这将使用
JSONP
来执行跨域请求

数据类型:“jsonp”

使用JSONP加载JSON块。向 结束URL以指定回调。通过附加 一个查询字符串参数“=[TIMESTAMP]”指向URL,除非缓存 选项设置为true.Docs for
$.ajax()

资料来源:


在通过jQuery发出AJAX请求时,您可以设置更多选项,请查看文档以查看所有选项。

IE8中不起作用。我在这里试图绕过“允许跨域访问”禁用IE8的选项。为此,我需要一个跨域请求。将数据类型设置为jsonp在IE8中不起作用。至少对我来说不起作用。有什么建议吗Jasper?我建议使用代理服务器端脚本。因此,您可以将服务器端脚本作为目标,该脚本与代码的其余部分位于同一域中,并且它可以跨域执行work.Flow是:JS对服务器端脚本进行AJAX调用,服务器端脚本进行跨域请求,然后服务器端脚本输出其请求的返回,然后由JS读取。是的。可以这样做。JSP页面/Servlet如何使用这些参数向我在代码中的页面发送帖子?我不熟悉JSP,但是我使用ASP Classic、PHP和Cold Fusion来实现这一点,因此我假设可以在JSP中实现。这篇文章看起来很有希望:它在IE8中不起作用。我在这里尝试的是绕过“允许跨域访问”禁用IE8的选项。为此,我需要一个跨域请求。将数据类型设置为jsonp在IE8中不起作用。至少对我来说不起作用。有什么建议吗Jasper?我建议使用代理服务器端脚本。因此,您可以将服务器端脚本作为目标,该脚本与代码的其余部分位于同一域中,并且它可以跨域执行work.Flow是:JS对服务器端脚本进行AJAX调用,服务器端脚本进行跨域请求,然后服务器端脚本输出其请求的返回,然后由JS读取。是的。可以这样做。JSP页面/Servlet如何使用这些参数向我在代码中的页面发送帖子?我不熟悉JSP,但是我使用ASP Classic、PHP和Cold Fusion实现了这一点,因此我假设可以使用JSP实现这一点
$.ajax({
    url      :  <url>,
    type     : 'post',
    dataType : 'jsonp',
    success  : function (serverResponse) {},
    error    : function (jqXHR, textStatus, errorThrown) {}
});