POST后,IE不读GET成功(IE not reading GET success after P

2019-10-29 12:26发布

我似乎无法找出为什么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>');
            }
        });

OK,我试过成功后添加一个错误,我看到,我让我的弹出,因为我是应该的,但qs.message的值是0。为什么我会得到错误,而不是成功,当它是成功的在其他浏览器。

Answer 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 {

                                }
                 }


Answer 2:

不幸的是我必须做在传统IE的行为速成班,和这个职位是非常有益的。 这里有一些其他的链接,以帮助那些不得不面对这些问题:

  • 他们XDomainRequest对象的微软的文档
  • 一个内部博客文章涉及一些XDomainRequest的特质的

这是我作为后备必要时使用的功能:

// 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()


文章来源: IE not reading GET success after POST