我有一个注册表单,通过ajax检查用户名字段的可用名称。在用户名字段中输入用户名并按“检查!”按钮,脚本将值发送到php脚本。然后PHP脚本将用户名字段+样式替换为用户名字段,如下所示:
alt text http://moismski.com/textfields.png
因此,当使用PHP脚本中的等效项替换表单中的用户名字段然后提交表单时,然后在页面上获取脚本,检查用户名字段是否为空。并且它返回一个空的错误,但是在通过ajax检查用户名字段后它有值。
我不明白为什么它会变为空字段检查脚本,具有相同的字段名称并具有值?
P.S。在IE浏览器中运行良好,但在Firefox和Opera中测试会返回错误!
这是一个类似的例子:
<form method="post" action="check_form.php">
<div id="loadfield"><input type="text" name="username" value=""></div>
<input type="button" value="Check!" onclick="...script for sending username value to PHP script...">
<input type="submit" value="Submit a form">
</form>
这是一个脚本,在提交表单后检查空字段:
<?
if(empty($_POST["username"])){
echo "<script>alert('Username field is empty!');</script>";
}
?>
这是一个脚本,AJAX在提交之前发送用户名进行检查:
<?
if(empty($_GET["username"])){
echo '<input type="text" name="username" value="'.$_GET["username"].'" style="border-width:1; border-color:red; border-style:solid; background-color:rgb(255,232,230);">';
}
?>
答案 0 :(得分:0)
首先,在没有看到您的Javascript代码的情况下,很难知道您的脚本正在对从HTTP请求返回的响应做些什么。我猜这里出了问题。
其次......我想也许你正在以错误的方式接近问题。你在做什么根本不是真正的ajax。您正在进行的对话似乎是:
js:嗨,请为我检查这个用户名 php:好的,这是一个新的输入字段,用。替换旧的。
对话应该是:
js:嗨,请为我检查这个用户名 php:抱歉,该用户名被取消了 js:好的,谢谢,我会让用户知道
你的php脚本应该返回什么,是一个XML文件,表明用户名的可用性。类似的东西:
<?xml version="1.0" encoding="UTF-8"?>
<logincheck username="mylogin">
<available>false</available>
</logincheck>
然后由您的javascript代码解释该响应并将类添加到输入字段(优于设置内联样式)或显示您认为合适的任何其他消息。
然后你真的在做ajax!