ajax POST调用在IE中不起作用,但在所有其他浏览器中都起作用

ajax POST调用在IE中不起作用,但在所有其他浏览器中都起作用,ajax,internet-explorer,jquery,post,Ajax,Internet Explorer,Jquery,Post,嘿,我有以下ajax POST调用: function callAjax(what2Do) { jQuery.ajax({ url: "count.php?do=" + what2Do, type: "POST", data: "", cache: false, success: function(response, textStatus, jqXHR)

嘿,我有以下ajax POST调用:

function callAjax(what2Do)
    {
        jQuery.ajax({
            url: "count.php?do=" + what2Do,
            type: "POST",
            data: "",
            cache: false,
            success: function(response, textStatus, jqXHR){
                alert('done!');
            },
            error: function(jqXHR, textStatus, errorThrown){
                alert(
                    "The following error occured: "+
                    textStatus, errorThrown
                );
            }
        });
    }
我不断收到错误出现了以下错误:在iE9中运行页面时出错,但在所有其他浏览器中都可以正常工作

如果IE中没有它,我会错过什么?返回的是简单的文本。

请尝试以下操作:

function callAjax(what2Do)
{
    jQuery.ajax({
        url: "./count.php",
        type: "GET",
        data: { 'do': what2Do },
        cache: false,
        success: function(response, textStatus, jqXHR){
            alert('done!');
        },
        error: function(jqXHR, textStatus, errorThrown){
            alert(
                "The following error occured: "+
                textStatus, errorThrown
            );
        }
    });
}

不幸的是,为了应对几乎相同的情况,我不得不参加遗留IE行为的速成班。在我的例子中,它归结为一个顽固的IE使用自己专有的XDomainRequest对象来处理COR。一些好的链接:

尽管对拒绝遵循标准的浏览器进行例外处理是令人厌恶的,但我在项目中使用了以下内容来解释必要的情况:

// This is necessary due to IE<10 having no support for CORS.
function fallbackXDR(callObj) {
    if (window.XDomainRequest) { 
        var xdrObj = new XDomainRequest();
        xdrObj.timeout = callObj.timeout;
        xdrObj.onload = function() {
            handleSuccess(xdrObj.responseText);
        };
        xdrObj.onerror = function() {
            handleError(xdrObj);
        };
        xdrObj.ontimeout = function() {
            callObj.xdrAttempts = callObj.xdrAttempts++ || 1;
            if (callObj.xdrAttempts < callObj.maxAttempts) {
                fallbackXDR(callObj);
            }
        };
        xdrObj.onprogress = function() {
            // Unfortunately this has to be included or it will not work in some cases.
        };

        // Use something other than $.param() to format the url if not using jQuery.
        var callStr = callObj ? '?'+$.param(callObj.urlVars) : '';
        xdrObj.open("get", callObj.url+callStr);
        xdrObj.send();
    } else {
        handleError("No XDomainRequest available.", callObj);
    }
}//fallbackXDR()

//这是必要的,因为IETo要获得更好的信息,请修复警报以便获得更多信息<代码>文本状态+“|”+错误抛出
查看IE9开发工具(F12)中的网络选项卡。这应该会给你完整的答复。如果你在那之后步履蹒跚,在这里发布响应以获得进一步帮助。我的钱在他身上,意思是IE8。@flem:在“网络”选项卡的响应正文中,它有正确的NOTQUICED值,并且它发送的参数也很好,所以我不确定为什么会出错?@KevinB:错误是TypeError:Object不支持属性或方法“toLowerCase”,我正在运行这个在facebook标签内。支持这个建议。还记得修改服务器端代码以使用POST数据而不是GET数据是的,我担心OP发送的帖子URL中包含GET数据。这不应该是个问题,但是IE8对这样的东西特别挑剔。你能试着把它放在jQuery.ajax(line?alert(what2Do))之前吗;