onkeyup事件不起作用 - AJAX

时间:2014-09-20 20:30:13

标签: ajax

我正在学习Ajax,我正在尝试编写一个简单的代码。但不幸的是它不起作用。有人能告诉我有什么问题吗?感谢

使用ajax脚本编写代码:

function show(str,url,div) {
    var x;
    if(str.length==0) {
        document.getElementById("meno").innerHTML="";
        return;
    }
    if(window.XMLHttpRequest) {
        x= new XMLHttpRequest();
    }
    else {
        x= new ActiveXObject("Microsoft.XMLHTTP");
    }
    x.onreadystatechange=function() {
        if(x.readyState==4 && x.status==200) {
            document.getElementById("meno").innerHTML=x.responseText;
        }

        x.open("POST",url,true);
        x.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        x.send("string=str");
    }
}
<form action="registracka.php" method="post">
<table cellspacing=10px>
<tr>  
<td>Name</td><td><input type="text" name="meno" onkeyup="show(this.value,ajax.php,meno)">  
</td><td><div id="meno"></div></td></tr>
</table>
</form>

脚本ajax.php只需打印出消息OK ,,,但在输入信件后它没有任何效果。

1 个答案:

答案 0 :(得分:0)

您需要将函数引用为文字字符串的函数:

<td>Name</td><td><input type="text" name="meno" onkeyup="show(this.value, 'ajax.php', 'meno')">  

您是否因为试图访问未定义的变量ajax而在Javascript控制台中出错?

发送参数时,需要连接变量:

x.send("string=" + encodeURIComponent(str));

另外,你的大括号错了,所以你不是首先发送AJAX请求。您有代码在回调函数中发送请求。

function show(str,url,div) {
    var x;
    if(str.length==0) {
        document.getElementById(div).innerHTML="";
        return;
    }
    if(window.XMLHttpRequest) {
        x= new XMLHttpRequest();
    }
    else {
        x= new ActiveXObject("Microsoft.XMLHTTP");
    }
    x.onreadystatechange=function() {
        if(x.readyState==4 && x.status==200) {
            document.getElementById(div).innerHTML=x.responseText;
        }
    }
    x.open("POST",url,true);
    x.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    x.send("string=" + encodeURIComponent(str));
}