Internet Explorer中的window.XMLHttpRequest问题(适用于Chrome)

时间:2013-04-21 18:39:19

标签: javascript internet-explorer google-chrome xmlhttprequest

我应该是一个简单的脚本,如下所示:

function functionName(code){
var xmlhttp;
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)
        {
        var result=xmlhttp.responseText;
        if (result=="FAIL")
        {
            // Alert 
        }
        else
        {
            // Alert
        }
        }
}
xmlhttp.open("GET","script.php?q="+code,true);
xmlhttp.send();
}

我在页面上有一个按钮,其中有一个调用该函数的onclick命令:

<form action="">
<table><tr><td><input type="text" name="code" id="code" size="4"></td><td><a onclick="functionName(code.value)"><img src="images/button.png" /></a></td></tr></table><br />

从表单输入发送代码,如果script.php返回“FAIL”则给出一个响应,而在所有其他情况下发出另一个警报(它做的不止于此,但是取出了所有其他内容并使用警报进行故障排除)。代码在Chrome中运行良好,但不在Internet Explorer中运行。我对此很新,所以我不确定如何调试它,是否有任何明显的问题会导致浏览器之间出现问题?谢谢你的帮助。

编辑:

我已将其缩小到它实际上是导致问题的onclick所以我将研究为什么这在IE中不起作用...

编辑2:

原来它看起来像IE10怪癖 - 适用于所有其他版本,并且在兼容性视图中,虽然没有想法

2 个答案:

答案 0 :(得分:0)

当您使用jquery标记问题时 - 我建议您使用更简单的方法而不是复杂方法(让jquery管理跨浏览器兼容性

function functionName(code){
  $.get("script.php?q="+code,function(result){
    if (result=="FAIL"){
        // Alert 
    }
    else{
        // Alert
    }
  });
}

修改:

更新您的a

<a href='#' id='getCode'>

<强>脚本:

$(document).ready(function(){
   $('#getCode').on('click',function(){
      var code = $('#code').val();
      $.get("script.php?q="+code,function(result){
        if (result=="FAIL"){
            // Alert 
        }
        else{
            // Alert
        }
      });
   });
});

答案 1 :(得分:0)

.open清除IE中之前设置的任何onreadystatechange处理程序。您的代码应如下所示:

var xmlhttp = ...;
xmlhttp.open(...);
xmlhttp.onreadystatechange = ...;
xmlhttp.send(...);