gpt4 book ai didi

php - Javascript 函数仅适用于其中的某些 "alert()"

转载 作者:行者123 更新时间:2023-12-02 18:48:48 35 4
gpt4 key购买 nike

我正在尝试使用 Ajax(Javascript + php)来检查当用户将焦点更改到表单的另一个字段时用户名是否可用。我的函数仅在我有一些alert()时才起作用,如果我删除它们,函数就会停止工作。

另一个奇怪的事情是 alert(requestObject.readyState); 只显示状态 1。据我了解,它应该显示所有状态,或者至少也显示状态 4。

这是我的 JavaScript 代码,它位于 HTML 页面的标题中。

    var requestObject = false;
function funcReceiveData()
{
alert(requestObject.readyState);
if(requestObject.readyState == 4)
{
if(requestObject.status == 200)
{
var status = requestObject.responseText;
if(status == "ok")
{
document.getElementById('userValid').innerHTML = 'Valid user';
}
else
{
document.getElementById('userValid').innerHTML = 'Choose another username';
}
}
}
}

if (window.XMLHttpRequest)
{
requestObject = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
requestObject = new ActiveXObject("Microsoft.XMLHTTP");
}

function checkUser()
{
if(requestObject){
requestObject.open("POST", "addUser.php", true);
requestObject.setRequestHeader("Content-type","application/x-www-form-urlencoded");
var user = document.getElementById('username').value;
var tobesent = "username=" + user;
requestObject.send(tobesent);
requestObject.onreadystatechange = funcReceiveData();
alert(tobesent);
}
}

这是我的 HTML 代码的正文部分:

<BODY>
<form method="POST" action="addUser.php">
<table>

<tr>
<td><strong>Username:</strong></td>
<td><input type="text" name="username" size="25" onblur="checkUser();" id="username"></td>
<td><i id='userValid'>bla</i>
</tr>

<tr valign="top">
<td><strong>Password:</strong></td>
<td><input type="password" name="password" size="25"></td>
</tr>

<tr valign="top">
<td><strong>Frist name:</strong></td>
<td><input type="text" name="Fname" size="25"></td>
</tr>

<tr valign="top">
<td><strong>Last name:</strong></td>
<td><input type="text" name="Lname" size="25"></td>
</tr>

<tr valign="top">
<td><strong>Address line 1:</strong></td>
<td><input type="text" name="address1" size="50"></td>
</tr>

<tr valign="top">
<td><strong>Address line 2:</strong></td>
<td><input type="text" name="address2" size="50"></td>
</tr>

<tr valign="top">
<td><strong>City:</strong></td>
<td><input type="text" name="city" size="25"></td>
</tr>

<tr valign="top">
<td><strong>Postcode:</strong></td>
<td><input type="text" name="postcode" size="25"></td>
</tr>

<tr valign="top">
<td><strong>Phone:</strong></td>
<td><input type="text" name="phone" size="25"></td>
</tr>

<tr valign="top">
<td><strong>Mobile:</strong></td>
<td><input type="text" name="mobile" size="25"></td>
</tr>

<tr valign="top">
<td><strong>Email:</strong></td>
<td><input type="text" name="email" size="25"></td>
</tr>
<tr>
<td><input type="submit" value="Submit" /></td>
<td><input type="reset" value="Clear" /></td>
</tr>
</table>
</form>

我的 PHP 代码如下,这是一个非常愚蠢的代码,只是为了测试。之后我将检查数据库中的用户名。

<?php 
$user = $_POST['username'];
if($user == "Tiago")
echo("ok");
else
echo("Error");
?>

我的页面托管在以下地址:https://devweb2012.cis.strath.ac.uk/~ntb13105/WAD/tests/Twig/FINAL/addUser.html

有人知道发生了什么事吗?

最佳答案

正在调用 funcReceiveData,而不是将其用作readyStateChange 事件处理程序。

它不起作用,因为此时 HTTP 请求还没有响应。在其中添加警报会延迟读取 requestObject.readyState 值的尝试,直到您单击“确定”,这足以让响应到达。

在发送请求之前删除 () 并分配事件处理程序。

requestObject.onreadystatechange = funcReceiveData;
requestObject.send(tobesent);

关于php - Javascript 函数仅适用于其中的某些 "alert()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16056189/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com