0

嘿,我有以下 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 中工作,我会错过什么?返回是简单的文本。

4

2 回答 2

1

不幸的是,我不得不参加有关遗留 IE 行为的速成课程,以处理几乎相同的情况。在我的情况下,归结为 IE 顽固地坚持使用他们自己专有的 XDomainRequest 对象来处理 CORS。一些很好的链接:

尽管为拒绝遵循标准的浏览器设置例外是令人厌恶的,但我在我的项目中使用类似以下的内容来解决必要的情况:

// 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()
于 2013-01-07T00:28:15.393 回答
0

尝试这个:

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
            );
        }
    });
}
于 2012-10-02T20:30:50.447 回答