从JavaScript异步运行PHP


Running PHP from JavaScript asynchronously

当我用HTML格式写东西时,我试图得到一些建议。

因此,当表单上触发onkeypressonkeyup事件时,我会调用JS函数。在JS函数中,我使用HTTP请求对象并从PHP文件中获取数据。

这里有一个小片段来介绍我正在做的事情。

HTML代码:

<form class="login" onsubmit="return isvalidated()" action="asd.php" method="post">
			<input id="userID" type="text" onkeypress="checkusername()" onkeyup="checkusername()" onblur="usercheckLv()" placeholder="username" name="user"><br><span class="errors" id="usererror"></span><br>
			<input id="passwordID" type="password" onblur="passwordcheckLv()" placeholder="password" name="password"><br><span class="errors" id="passworderror"></span><br>
			<input type="submit" value="Login">
</form>
<script src="js/index.js"></script>

JavaScipt代码:

function checkusername(){
	var xmlhttp = new XMLHttpRequest();
       	xmlhttp.onreadystatechange = function() {
           	if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
           	   	document.getElementById("usererror").innerHTML = xmlhttp.responseText;
            	}
       	xmlhttp.open("GET", "xx.php", true);
       	xmlhttp.send();
	}
}

PHP文件xx.PHP:

<?php
    echo "fgfwegfdg";
?>

我的HTML文件位于名为taxi的文件夹中,index.jsxx.php位于taxi/js文件夹中。

所有其他函数usercheckLv() passwordcheckLv() isvalidated()都在index.js文件中,并且所有这些函数都正常工作。正在调用checkusername()(我已经调试过了)。

但是checkusername()中的内部函数不起作用。

请帮忙。提前谢谢。

注意:我在Ubuntu 中通过localhost运行文件

如果正在调用checkusername函数,但没有响应whatsover,那么问题一定来自Ajax调用。

我建议您仔细阅读ur函数代码的每一行,因为它们区分大小写,尤其是其中的xhttp部分。请查看w3school以获取正确的语法。

或者;使用if(xhttp.statusText=='OK')作为假定if(xmlhttp.readyState==4&&xmlhttp.status==200)。您还可以在代码中添加console.log()消息,以了解代码的中断位置。

希望这能帮助