0

我似乎无法找出为什么 IE 在发布后没有阅读我的成功。我试过cache: false了,没有运气。这适用于所有其他浏览器,但不适用于 IE。

       $.ajaxSetup({ cache: false });
        num = $('#num').val();
        phone = $('#phone').val();

        $.post("post.php?"+$("#MYFORM").serialize(), {

        }, function(response){

            if(response==1 && codeVal == 1 && telVal == 1)
            {
                $("#after_submit").html('');
                $("#Send").after('<label class="success" id="after_submit">Η αποστολή πραγματοποιήθηκε</label>');
                change_captcha();
                clear_form();
                $.ajax({
                        type:'get',
                        cache: false,
                        url: "http://web.somesite/submit_code.php",
                        dataType: 'html',
                        data:{ user: "one", pass: "mtwo", source: "WEB", receipt: num, msisdn: phone},
                        success: function(data) { 
                            var qsFull = "http://web.somesite.gr/submit_code.php?" + data;
                            var qs = URI(qsFull).query(true);
                            TINY.box.show({html:qs.message,animate:false,boxid:'error',top:5});
                        }
                    });
            }
            else
            {
                $("#after_submit").html('');
                $("#Send").after('<label class="error" id="after_submit">Error! in CAPTCHA .</label>');
            }
        });

好的,我尝试在成功后添加一个错误,我看到我的弹出窗口应该是这样,但是 qs.message 的值是 0。为什么我会得到错误而不是成功,当它在其他浏览器中成功时.

4

2 回答 2

1

不幸的是,我不得不参加有关遗留 IE 行为的速成课程,这篇文章非常有帮助。以下是一些其他链接,可帮助那些不得不处理这些问题的人:

这是我在必要时用作后备的函数:

// 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:06:53.153 回答
1

我找到了答案,这与 IE 对跨域等不灵活有关,所以我像这样添加了 XDomainRequest

    if (jQuery.browser.msie && window.XDomainRequest) {
                           var xdr = new XDomainRequest();
                           var my_request_data = { user: "M1web", pass: "m!", source: "WEB", receipt: num, msisdn: phone};
                           my_request_data = $.param(my_request_data);



                                if (xdr) {
                                    xdr.onerror = function () {
                                       alert('xdr onerror');
                                    };
                                    xdr.ontimeout = function () {
                                       alert('xdr ontimeout');
                                    };
                                    xdr.onprogress = function () {
                                       alert("XDR onprogress");
                                    alert("Got: " + xdr.responseText);
                                    };
                                    xdr.onload = function() {
                                        //alert('onload  ' + xdr.responseText);
                                        var qsFull = "http://web.web.gr/submit_code.php?" + xdr.responseText;
                                        var qs = URI(qsFull).query(true);
                                        TINY.box.show({html:qs.message,animate:false,boxid:'error',top:5});
                                        callback(xdr.responseText);
                                    };
                                    xdr.timeout = 5000;
                                    xdr.open("get", "http://web.web.gr/submit_code.php?" + my_request_data);
                                    xdr.send();
                                } else {

                                }
                 }
于 2012-11-30T09:19:03.383 回答