【发布时间】:2011-08-25 17:30:47
【问题描述】:
这是非常具体的,我还没有找到答案。
我正在编写一个脚本来检查一个名称是否已经使用 JQuery $.POST 输入到 SQL 服务器中。
前端是这样的:
注册.php
<div id="container" class="container">
<div id="wrapper" class="wrapper">
<div id="title" class="title">
Welcome to Taskar!
</div>
<div id="login" class="login">
<form method="post" action="registermembers.php">
<div id="exists">
Register Your Company Below:
</div>
<input type="text" id="company" name="company" value="Company Name"/> <br />
<br />
<input type="text" id="password" name="password" value="Default Password"/> <br />
<input type="submit" name="submitcompany" value="Submit" />
</form>
<script>
$(document).ready(function() {
$('#company').keyup(function() {
var $company = $(this).val();
var $reg = $('#exists').html();
$.post('include/reg_post.php', { company: $company, reg: $reg }, function(company) {
$('#exists').html(company);
});
});
});
</script>
</div>
</div>
</div>
后端代码如下所示:
reg_post.php
<?php
include 'include/db.php';
$reg = $_POST['reg'];
$company = $_POST['company'];
$email_hash = $_COOKIE['email_hash'];
$password = $_COOKIE['password'];
$sql = "SELECT * FROM taskar_employee WHERE (company = '$company')";
$result = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($result) <= 1){
echo $reg;
} else {
echo "This Company Already Exists!";
} ?>
现在,我遇到的问题是,当我对此进行测试时,它一直运行良好,直到我输入数据库中的公司名称。它显示公司已经注册。当我按退格键或键入另一个字母时,它仍然告诉我公司仍然存在,尽管它显然不会。
if 语句在得到相反的语句后似乎想阻止 $.post 功能继续运行?
你们觉得呢?
【问题讨论】:
-
每次击键时询问 db 是否是个好主意?如果您有许多用户同时执行此操作,则可能会有很多请求。
-
@morgar 有一个很好的观点。最好在您的事件处理程序中使用 setTimeout 以确保用户在您进行 POST 之前已停止输入一段时间。这是一个例子(使用dojo而不是jQuery,但setTimeout是纯js):davidwalsh.name/javascript-settimeout
标签: php jquery sql if-statement .post