jQuery.ajax类型:Post到未在IE中初始化的ashx文件.在FF, Chrome和Safari中工作良好



这是我向堆栈提出的第一个问题。

jQuery。ajax类型:Post到未在IE中初始化的ashx文件。在FF, Chrome和Safari中工作良好

下面代码:

$.ajax({
    type: "Post",
        url: "http://[ ... ]loguserdata.ashx?" + dataString,
        data: "",
        cache: "false",
        contentType: "text/plain",
        success: function(msg){
            //alert( "Data Saved: " + msg );
        }
});

by在FF中工作良好等。我的意思是调用ashx文件并记录信息。我可以在fiddler, firebug和chrome浏览器中看到ajax调用。

但在IE9或IE兼容模式下似乎没有发生jackchit

我可以得到以上代码的几个版本在其他浏览器中工作。包括$('#result').load( ...

但是在IE中什么都不能用

btw,在IE本地工作正常。

哦,我根本不在乎任何返回值。

,这不是缓存问题。我有一个date=getTime()粘在querystring的末端。

querystring (dataString)看起来像fname=john&lname=doedy

编辑:我已经解决了这个问题。如果明天有时间,我会给你一个完整的答案。

长话短说:不能跨域执行XMLHttpRequest。使用jQuery的getJSON方法与querystring参数&callback=?添加到url中。我认为这将数据类型转换为JSONP。

 var url = 'http://handlers.flowauto.com/eprice/loguserdata.ashx?fname=jim&callback=?';
        $.getJSON(url, function(data) {
            // do some stuff
        });

这里有一些帮助我解决这个问题的链接。

XMLHttpRequest不能用jQuery加载URL

http://api.jquery.com/jQuery.getJSON/参见下面的节选

JSONP如果URL包含字符串"callback=?"(或类似的,如由服务器端API定义),请求被视为JSONP代替。参见$.ajax()中关于jsonp数据类型的讨论更多细节。

http://api.jquery.com/jQuery.ajax/参见下面的节选

附加说明:由于浏览器安全限制,大多数"Ajax"申请须遵守同源政策;请求不能成功地从不同的域、子域或协议。脚本和JSONP请求不受相同来源的约束政策限制。

如果您没有发送POST数据,请尝试以下操作:

$.ajax({
    type: "GET",
        url: "http://[ ... ]loguserdata.ashx?" + dataString,        
        cache: "false",
        contentType: "text/plain",
        success: function(msg){
            //alert( "Data Saved: " + msg );
        }
});

检查你的IE安全,因为它在本地工作。我猜本地主机上的文件有更多的特权。

编辑:

IE9阻止跨域ajax调用,Opera浏览器也是如此。对于IE9,您可以阅读这篇文章,以获得解决方法。建议使用XDR (XDomainRequest)而不是通常的XMLHttpRequest。

最新更新