0

我有一个简单的脚本,如下所示:

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 怪癖 - 适用于所有其他版本,在兼容性视图中,不知道为什么

4

2 回答 2

0

.open clears any previously set onreadystatechange handler in IE. Your code should look like this:

var xmlhttp = ...;
xmlhttp.open(...);
xmlhttp.onreadystatechange = ...;
xmlhttp.send(...);
于 2013-04-21T19:16:54.653 回答
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
        }
      });
   });
});
于 2013-04-21T18:47:56.057 回答