Ajax在Chrome,Firefox和&歌剧

时间:2014-01-20 02:36:41

标签: javascript php ajax

下面是我在主页面上的功能。这个代码在IE中运行正常,请检查我在哪里做错了

我只想将值传递给ajax页面,因为你可以看到我上面的链接。

  function showUser2(str2)
  {

  if (str2=="")
    {
    document.getElementById("txtHint").innerHTML="";
    return;
    } 
 if (window.XMLHttpRequest)
    {
    xmlhttp=new XMLHttpRequest();
    }
  else
    {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  xmlhttp.onreadystatechange=function()
    {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
      document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
      }
    }

 var drdownValue = document.getElementsByName('shorting').item(0).value;
 var buttonValue1 = document.getElementsByName('buttonpassvalue1').item(0).value;

     var value = parseInt(document.getElementById('count').value, 10);
     value = isNaN(value) ? 0 : value;
     value++;
     document.getElementById('count').value = value;

var val123 = document.getElementById('count').value.trim();    
var gotnumber = document.getElementById('getpagevalue').value.trim();    

     if(val123 > gotnumber){
        buttonpassvalue1.setAttribute("disabled","disabled");
        buttonpassvalue.removeAttribute("disabled");

     }    else{
        buttonpassvalue.removeAttribute("disabled");
        buttonpassvalue1.removeAttribute("disabled");
     }

 alert(drdownValue);// to check click and value
 alert(buttonValue1);// to check click and value

 xmlhttp.open("GET", "productlistajax.php?q=" + drdownValue + "&version1=" + buttonValue1, true);

 xmlhttp.send();
  }

按钮html代码

<button class="button" type="button" name="buttonpassvalue1" value="1" onclick="showUser2(this.value)">Next >> </button>

此代码在IE中运行正常,请检查我在哪里做错了

我只想将值传递给ajax页面,因为你可以看到我上面的链接。

感谢

3 个答案:

答案 0 :(得分:2)

我建议使用jQuery或其他框架,它将始终了解所有特定于浏览器的东西。

如果您更喜欢使用本机代码,则需要一些额外的代码。首先,不要仅仅依赖ActiveXObject("Microsoft.XMLHTTP");XMLHttpRequest,而这些可能并不总是可用。而不是那样,使用:

function GetXmlHttpObject(){
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}

var xmlhttp=GetXmlHttpObject();

然后你定义你的回调:

 xmlhttp.onreadystatechange=function()
    {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
      document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
      }
    }

并发送它,但我会在网址中包含一个随机变量,以确保浏览器不缓存任何内容

xmlHttp.open("GET",url+"&sid="+Math.random(),true);
xmlHttp.send(null);

无论如何,可能你的问题与ajax本身无关,可能你的代码中还有其他内容导致一切崩溃。

例如,看一下chrome控制台,我确定你会在错误日志中找到一些有用的信息。如果您不知道怎么做,这里有guide

答案 1 :(得分:0)

首先,我已经清理了一下你的代码:

function showUser2(str2){

  if (str2==""){
    document.getElementById("txtHint").innerHTML="";
    return;
  }

  if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest();
  else xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

  xmlhttp.open("GET", "productlistajax.php?q=" + drdownValue + "&version1=" + buttonValue1, true);

  xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState==4 && xmlhttp.status==200){
      document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
      }
  }

   var drdownValue = document.getElementsByName('shorting').item(0).value;
   var buttonValue1 = document.getElementsByName('buttonpassvalue1').item(0).value;

   var value = parseInt(document.getElementById('count').value, 10);
   value = isNaN(value) ? 0 : value;
   value++;
   document.getElementById('count').value = value;

   var val123 = document.getElementById('count').value.trim();    
   var gotnumber = document.getElementById('getpagevalue').value.trim();    

   if(val123 > gotnumber){
        buttonpassvalue1.setAttribute("disabled","disabled");
        buttonpassvalue.removeAttribute("disabled");

   }else{
        buttonpassvalue.removeAttribute("disabled");
        buttonpassvalue1.removeAttribute("disabled");
   }

   alert(drdownValue);// to check click and value
   alert(buttonValue1);// to check click and value


   xmlhttp.send();
}

请注意,我已将xmlHTTP.open移到xmlHTTP.onreadystatechange之前。

如果这不能解决您的问题,请删除非必要的代码,以便我更好地了解您的意图。

jQuery在你的情况下只会保存几行代码。您可以编写紧凑,健壮且可维护的JavaScript代码。我特意注册了StackOverflow,这样我就可以分享我对普通OL'JavaScript的了解。

答案 2 :(得分:0)

Chrome,Firefox和&amp; Opera不支持Microsoft对象。您正在使用

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

在chrome中,这一行给了我这个错误:

  

ReferenceError:未定义ActiveXObject

您必须以跨浏览器兼容的方式获取数据。这可以使用jQuery或普通Javascript