SORU
29 Temmuz 2010, PERŞEMBE


Jquery $.çapraz etki alanı ajax çağrıları IE başarısız

Çapraz etki alanı isteği $.ajax kullanarak yapıyorum. Firefox ve Chrome üzerinde çalışıyor, ama 8 ya da IE 7 üzerinde bir çağrı vermek. Herkes şu sorunun ne olduğunu söyleyebilir mi?

  1. JSON ve JSONP kullanarak, bazı özel kısıtlamalar nedeniyle bıraktım) kullandım.
  2. Zaten sitemde Allow-access-control-origin başlık kullanıyorum. (Bunlar olmadan, Chrome ve Firefox başarılı isteklerini yapıyor.)
  3. Zaten https://developer.mozilla.org/en/http_access_control denedim

Kod:

$.ajax({
    type: 'GET',
    url: "http://anotherdomain.com/Service/GetControl?id="   zoneID,
    cache: false,
    contentType: "application/x-www-form-urlencoded",
    async: false,
    beforeSend: function (request) {
        //alert('before send');
        //request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        //request.setRequestHeader("X-PINGOTHER", "pingpong");
    } ,
    success: function (data, status) {
        //alert("Data returned :"   data);
        //alert("Status :"   status);
        if (status == "success" && data != "")
            $("#"   div.id).append(data);
        else
            $("#"   div.id).attr("style", "display:none;");
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert(textStatus);
        alert(errorThrown);
    }
});

Son 2 gündür bu kodu kaldım ve mevcut çeşitli ipuçları birden çok site, ama hayır şans daha denedi. Birisi çalışan bir ipucu ;) olabilir umarım

CEVAP
29 HAZİRAN 2012, Cuma


IE8 VE 9 için XDomainRequest (S) kullanmanız gerekir. Eğer benzer bir biçimlendirme bir tür olduğunu göreceksiniz altında dolar.ajax. Benim araştırma benim bildiğim kadarıyla bu çapraz etki alanı IE6 ve 7 de (hala bir seyir için-geçici bir çözüm bulmak için bu çalışma alamıyorum. S ilk IE8 (Internet Explorer 9 da) çıktı. Yani Kısacası ilk, 6/7 için test ve AJAX.

IE10 etki yapabilir normalde tüm tarayıcılar (Microsoft tebrikler... iç çekiş) gibi

Sonra başka testler ise 'pencere (tarayıcı koklama daha iyi anlaşılan) XDomainRequest ve JSON AJAX isteği bu şekilde, diğer bilge BAŞKA halk yok mu $.ajax.

Bu yardımcı olur umarım!! Beni sonsuza kadar bu oyunu aslında kavuşturmak aldı

Information on the XDomainRequest object

// call with your url (with parameters) 
// 2nd param is your callback function (which will be passed the json DATA back)

crossDomainAjax('http://www.somecrossdomaincall.com/?blah=123', function (data) {
    // success logic
});

function crossDomainAjax (url, successCallback) {

    // IE8 & 9 only Cross domain JSON GET request
    if ('XDomainRequest' in window && window.XDomainRequest !== null) {

        var xdr = new XDomainRequest(); // Use Microsoft XDR
        xdr.open('get', url);
        xdr.onload = function () {
            var dom  = new ActiveXObject('Microsoft.XMLDOM'),
                JSON = $.parseJSON(xdr.responseText);

            dom.async = false;

            if (JSON == null || typeof (JSON) == 'undefined') {
                JSON = $.parseJSON(data.firstChild.textContent);
            }

            successCallback(JSON); // internal function
        };

        xdr.onerror = function() {
            _result = false;  
        };

        xdr.send();
    } 

    // IE7 and lower can't do cross domain
    else if (navigator.userAgent.indexOf('MSIE') != -1 &&
             parseInt(navigator.userAgent.match(/MSIE ([\d.] )/)[1], 10) < 8) {
       return false;
    }    

    // Do normal jQuery AJAX for everything else          
    else {
        $.ajax({
            url: url,
            cache: false,
            dataType: 'json',
            type: 'GET',
            async: false, // must be set to false
            success: function (data, success) {
                successCallback(data);
            }
        });
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BetterCoder

    BetterCoder

    17 Aralık 2012
  • Djbasilio AuToBaSs

    Djbasilio Au

    20 Aralık 2008
  • MikeyMacintosh

    MikeyM

    28 Aralık 2009