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

jQueryを使用してみましたか?IEが応答をどのように処理しているかを確認しましたか?おそらく、parseFloatに必要なテキストとして「0.00」が表示されますか?

于 2012-07-25T20:36:41.543 に答える
0

秘訣は、IEブラウザまたはバージョンが10未満の個別のコードXMLを使用することです。

したがって、Ajaxが呼び出されるたびに、ブラウザに応じて入力パラメータXML Domまたはテキストを使用してメソッドparseXmlが呼び出されます....現在のブラウザがIEの場合、XMLドキュメントをアップロードし、Microsoft標準に従って処理し、XMLと残りの部分を返します。 Ajaxのプロセスは期待どおりに続行されます!!

注:browser.msieはjQuery 1.9ではサポートされていませんが、互換性を持たせるために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 に答える