daha önce senkron request ile ilgili bir başlık açmıştım fakat artık tamamen asenkron request ile çalışmaya karar verdim. problemim diğer başlıktakinden farklı olduğu için yeni başlık açma gereği duydum.
aşağıda kullandığım örnek bir kod parçası var:
function Ekle(email)
{
var myaddress = email.value;
var values = "email="+myaddress;
var xmlHTTP = getXMLHTTP();
xmlHTTP.open("POST", "ekle.php");
xmlHTTP.onreadystatechange = function() {
if(xmlHTTP.readyState==4) {
if(xmlHTTP.status==200) {
// Bu kısımda problem yok
}
}
}
xmlHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHTTP.setRequestHeader("Content-length", values.length);
xmlHTTP.setRequestHeader("Connection", "close");
xmlHTTP.send(values);
}
// Asagidaki fonksiyonu onceden iucoders'tan bir arkadastan almistim
function getXMLHTTP() { //fuction to return the xml http object
var xmlHTTP = null
if (window.XMLHttpRequest) {
xmlHTTP = new XMLHttpRequest();
if (xmlHTTP.overrideMimeType) {
xmlHTTP.overrideMimeType('text/xml; charset=iso-8859-9')
}
}
else if (window.ActiveXObject) {
try {
xmlHTTP = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
try {
xmlHTTP = new ActiveXObject("MSXML2.XMLHTTP.3.0");
} catch (e) {
window.alert("Tarayıcınız AJAX desteklemiyor!");
}
}
}
}
return xmlHTTP;
}
bu kod firefox'ta düzgünce çalışırken IE'da tutarsız çalışıyor. aynı kod farklı denemelerde aşağıdaki 3 farklı sonucu verebiliyor
1) xmlHTTP.readyState 1'de kalıyor (yani xmlHTTP.send metodu hic calismiyor)
2) request gerçekleşirse yanıt olarak HTTP 12030 hatası geliyor
3) kod sorunsuz bir şekilde çalışıyor
kodda böyle bir tutarsızlığa neden olabilecek bi şey bulamadım. en azından sabit bir sonuç alsam ona göre hareket edebilirdim. kod aynı ama farklı denemelerde bahsettiğim 3 sonuçtan biri geliyor. firefox'da her şey normal ama IE'da bu kadar tutarsız çalışıyor.
bu konuda yardımcı olabilecek arkadaşlara şimdiden teşekkürler.
|