以下Ajax的工作原理,但它需要一段時間只是爲了在客戶端的用戶名已經採取通知用戶。有沒有什麼辦法來解決這個問題,或者這只是Ajax的正常行爲。上這個Ajax響應
客戶:
<title>Choose a username</title>
<style>
#targetDiv {
background-color: #FF9999;
width: 40%;
}
</style>
<script type = "text/javascript">
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
function getData(dataSource)
{
if(XMLHttpRequestObject) {
XMLHttpRequestObject.open("GET", dataSource);
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200) {
if(XMLHttpRequestObject.responseText == "taken"){
var targetDiv = document.getElementById("targetDiv");
targetDiv.innerHTML = "<div>That username is taken.</div>";
}
}
}
XMLHttpRequestObject.send(null);
}
}
function checkUsername(keyEvent)
{
keyEvent = (keyEvent) ? keyEvent: window.event;
input = (keyEvent.target) ? keyEvent.target : keyEvent.srcElement;
if (keyEvent.type == "keyup") {
var targetDiv = document.getElementById("targetDiv");
targetDiv.innerHTML = "<div></div>";
if (input.value) {
getData("check.php?name=" +input.value);
}
}
}
</script>
</head>
<body>
<H1>Choose a username</H1>
Enter your new username <input id = "textField" type = "text"
name = "textField" onkeyup = "checkUsername(event)">
<div id = "targetDiv"><div></div></div>
</body>
</html>
服務器
<?php
if ($_GET["name"] == "steve"){
echo "taken";
}
else {
echo "ok";
}
?>
你可以試試。 –