Javascript Internet Explorer 8/7 Ajax Call Gönderme yok

3 Cevap php

Hi Guys new to this site but a big fan. Right the problem. It's come to our attention that sometimes on Internet Explorer the post variable don't come through. This is our basic ajax function

function GetXmlHttpObject(handler){ 
 var objXmlHttp=null

 if (navigator.userAgent.indexOf("Opera")>=0){
  xmlHttp=new XMLHttpRequest();
  xmlHttp.onload=handler
  xmlHttp.onerror=handler
  return xmlHttp;
 }
 if (navigator.userAgent.indexOf("MSIE")>=0){ 
  var strName="Msxml2.XMLHTTP"
  if (navigator.appVersion.indexOf("MSIE 5.5")>=0){
   strName="Microsoft.XMLHTTP"
  } try { 
   objXmlHttp=new ActiveXObject(strName)
   if(handler == null) {
    handler = function() {}
   }
   objXmlHttp.onreadystatechange=handler 
   return objXmlHttp
  } catch(e) { 
   return 
  } 
 } 
 if (navigator.userAgent.indexOf("Mozilla")>=0){
  objXmlHttp=new XMLHttpRequest()
  objXmlHttp.onload=handler
  objXmlHttp.onerror=handler 
  return objXmlHttp
 }
}

ve burada kullandığı çağrı

 params = "object_type="+object_type+"&object_id="+object_id;
 xmlHttp_comment_notifyreset = GetXmlHttpObject(notification_reset_helper);//fails on safari 1
 xmlHttp_comment_notifyreset.open("POST", url , true);


 xmlHttp_comment_notifyreset.setRequestHeader("Content-Type", "application/x-www-form-URLencoded");
 xmlHttp_comment_notifyreset.setRequestHeader("Content-Length", params.length);
 xmlHttp_comment_notifyreset.setRequestHeader("Connection", "close");
 xmlHttp_comment_notifyreset.send(params);

Right basically the object_type,object_id don't get sent despite being there. Like I say it looks to be just a IE7/8 issue that sometimes happens.

Ben bir önbelleğe alma sorun olabileceğini düşündüm. Ama biz ne biz son değiştirilen zaman damgası değiştirmek ve iş gibi görünüyor yeni bir dosya almak için htaccess kullanmak bir değişiklik yapmak evertime biz ancak bir function.js dosyası olması. IE vb yeni dosyayı davranır gibi önbellek bulunuyor.

Onlar bizim üyelerine indirmek için çok büyük olduğu gibi PS Biz JQuery veya herhangi diğer çerçeveler kullanamazsınız.

Thanks for your help. Richard

3 Cevap

Ben sorun IEs tanımakla olduğunu düşünüyorum - Sen doğru değil ki, bir çanta içinde IE6 + koydu. Bu kadar hatırladığım kadarıyla IE6 ve 7 + arasında değişti. Sen tarayıcı adlarının bağlıdır olamaz.

Cidden. Bu kötü XMLHttpRequest yaratma kodudur. Nesne oluşturma, güvenilir dev sitelerinde bazı büyük örneklerde ve AJAX kitapları yapılır. Bu da nereden buldun?

Ama bir çerçeve kullanın lütfen. Sizin için bekleyen bir çizgi ajax arama yepyeni bir dünya var!

Jquery kullanarak ve şimdi daha js toplam ağırlığı daha az olur (ki muhtemelen şimdi yapmıyoruz) bunu minifying iyi kodunuz yeniden bahse girerim. Bütün POST kullanım kod 5 satırları alacaktır Özellikle bu.

Merhaba çocuklar ben hala sorunlar yaşıyorum. I istimal

function GetXmlHttpObject(handler){ 
     var objxml = null;  
   var ProgID = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];              

     try {  
         objxml = new XMLHttpRequest();  
     }  
     catch(e) {  
         for (var i = 0; i < ProgID.length; i++){  
             try {  
                 objxml = new ActiveXObject(ProgID[i]);  
             }  
             catch(e) {  
                 continue;  
            }  
         }  
     } 
         objxml.onreadystatechange=handler;





     return objxml;  

}

Benim XML nesnesi ve gibi

sayfasını çağırmak için bu tür tarz

var d = new Date();
    var time = d.getTime();
    var url= SITEURL + "/libs/ajax/ajax_site_mood.php?timestamp="+time;

    params = "mood_value="+value;
    xmlHttp_site_mood = GetXmlHttpObject(null);//fails on safari 1
    xmlHttp_site_mood.open("POST", url , true);

    xmlHttp_site_mood.setRequestHeader("Cache-Control", "no-cache");
    xmlHttp_site_mood.setRequestHeader("Cache-Control", "no-store");
    xmlHttp_site_mood.setRequestHeader("Cache-Control", "must-revalidate");
    xmlHttp_site_mood.setRequestHeader("Cache-Control", "post-check=0");
    xmlHttp_site_mood.setRequestHeader("Cache-Control", "pre-check=0");
    xmlHttp_site_mood.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");    


    xmlHttp_site_mood.setRequestHeader("Content-Type", "application/x-www-form-URLencoded");
    xmlHttp_site_mood.setRequestHeader("Content-Length", params.length);
    xmlHttp_site_mood.setRequestHeader("Connection", "close");
    xmlHttp_site_mood.send(params);

I'm changing the request for the library every time it changes based off it's last updated time. But doesn't seem to want to always work. Any clues. I'm curious also as to what jquery headers it sends when it calls an post and uses it's cache:false Thanks for your help. Richard

Onlar jQuery minified veya paketlenmiş sürümünü indirebilirsiniz yapamıyorsanız o zaman sorunlar var. O büyük ve tarayıcılar şimdi 8 bağlantıları için izin gerçek değil ...

Google'ın CDN üzerinden de kullanılabilen, bkz http://code.google.com/apis/ajaxlibs/documentation/