1
$('.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 会有所帮助......它没有:(

有任何想法吗?

4

2 回答 2

0

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

所以每次调用 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;
}
于 2013-06-15T14:57:54.887 回答
0

你试过使用 jQuery 吗?您是否检查过 IE 是如何处理响应的 - 也许它将“0.00”视为您必须解析的文本?

于 2012-07-25T20:36:41.543 回答