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?
- JSON ve JSONP kullanarak, bazı özel kısıtlamalar nedeniyle bıraktım) kullandım.
- Zaten sitemde
Allow-access-control-origin
başlık kullanıyorum. (Bunlar olmadan, Chrome ve Firefox başarılı isteklerini yapıyor.) - 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
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);
}
});
}
}
jQuery AJAX etki alanı çapraz...
Çapraz etki alanı AJAX çağrısı...
Firefox çapraz etki alanı ajax isteği ...
Nasıl Facebook tuval sayfalarda iframe...
Çapraz menşe istekleri tek ama'In...