jQuery.ajax类型:发布到不在IE中启动的ashx文件。适用于FF,Chrome和Safari

时间:2011-10-13 03:51:55

标签: jquery ajax post ashx

这是我对堆栈的第一个问题。

jQuery.ajax类型:发布到不在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 );
        }
});

在FF等工作正常我的意思是调用ashx文件并记录信息。 我可以看到fiddler,firebug和chrome等效的ajax调用。

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

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

但是NOTHING在IE中工作

btw,在IE中本地工作正常。

哦,我不会给任何关于任何返回值的小便。

并且它不是缓存问题。我在date=getTime()的末尾添加了querystring

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

编辑:我已经解决了这个问题。我有空的时候会在明天发布一个彻底的答案。

3 个答案:

答案 0 :(得分:1)

长篇故事被截断: 您不能执行XMLHttpRequest交叉域。使用jQuery的getJSON方法和querystring参数& callback =?添加到网址。我相信这会将数据类型转换为JSONP。

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

以下是一些帮助我解决此问题的链接。

XMLHttpRequest cannot load an URL with jQuery

http://api.jquery.com/jQuery.getJSON/见下面的摘录

  

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

http://api.jquery.com/jQuery.ajax/见下面的摘录

  

附加说明:由于浏览器安全限制,大多数“Ajax”   请求受原始政策的约束;请求不能   从不同的域,子域或成功检索数据   协议。脚本和JSONP请求不受同一来源的约束   政策限制。

答案 1 :(得分:0)

检查您的IE安全性,因为它在本地工作。我猜locahost上的文件有更多权限。

编辑:

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

答案 2 :(得分:0)

尝试此操作,因为您没有发送POST数据:

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