AJAX请求无法在IE中运行

时间:2012-07-19 01:38:07

标签: ajax internet-explorer

$('.sizeSelect').change(function(size) {
sizeId = $(this).attr('id');
size = $('#' + sizeId).val();
lastChar = sizeId.substr(5);
addBtn = "#btn_" + lastChar;
shipId = "shipping_" + lastChar;

if (size=="")
 {
   document.getElementById(shipId).innerHTML="";
   return;
 } 
if (window.XMLHttpRequest)
 {// code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
 }
else
 {// code for IE6, IE5
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
xmlhttp.onreadystatechange=function()
 {
 if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
   document.getElementById(shipId).innerHTML=xmlhttp.responseText;
   var response = xmlhttp.responseText;
    if (response == 0.00) {
        $(addBtn).addClass('invisible');
    }
    else if (response > 0.00) {
        $(addBtn).removeClass('invisible');
    }
}
}

xmlhttp.open("POST","cart.php?size="+size+"&shipId="+lastChar, true);
xmlhttp.send();

 });

任何人都可以告诉我为什么这适用于Chrome,Firefox和Safari,而不是IE。我在某处看到它与强制有关,即不要缓存,并且从get到post更改请求会有所帮助......它没有:(

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你尝试过使用jQuery吗?你有没有检查IE如何处理响应 - 也许它看到“0.00”作为你需要解析的文本?

答案 1 :(得分:0)

诀窍是为IE浏览器使用单独的代码XML,或者使用少于10的版本。

因此,每次调用Ajax时,都会使用输入参数XML Dom或文本调用parseXml,具体取决于浏览器....如果当前浏览器是IE,则上传XML文档,根据Microsoft标准处理它并返回XML Ajax中的其余进程按预期进行!!

注意:jQuery 1.9不支持browser.msie,但您可以添加jquery-migrate-1.2.1.min.js以使其兼容或使用userAgent并查找哪个是当前浏览器

  $.ajax({
  type: 'GET',
  url: 'XML_file.xml',
  dataType: ($.browser.msie) ? "text" : "xml",
  success: function (xml) {

     var processedXML = parseXml(xml);

     $(processedXML).find('my record').each(function () {  //code  } 
   });


 function parseXml(xml) {

 if ($.browser.msie)  {

  if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp = new XMLHttpRequest();
  }
  else {// code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

    xmlhttp.open("GET", "XML_file.xml", false);
    xmlhttp.send();
    xmlDoc = xmlhttp.responseXML;

    xml = xmlDoc;
 }
   return xml;
}