使用 Jquery .post 方法进行验证


Using Jquery .post method for validation

我正在做小项目,现在我正在研究注册模块。我使用 Jquery .post 方法来调用检查输入的数据是否正确的页面。一切正常,但如果数据不正确,它会显示消息,但也注册用户。这是 js 代码:

$("#name").keyup(function(){  
  $.post("check/user_check.php" , {  
    username: $("#name").val()  
   }, function(response)    {  
     $("#validateTips").fadeIn("slow");  
     $("#validateTips").html(response);  
   });  
});

user_check.php是:

<?php
include "config.php";
$user = $_POST['username'];

$user_query = mysql_query("SELECT username FROM users WHERE username='$user'");

if(strlen($user) < 3)
{
    print "<span id='wrong'>username is too short</span>";
}

还有其他情况太久并且已经采取了,但我认为你明白有什么意义。所以问题是,如果打印的用户名不正确,该怎么办user_check.php防止注册?

返回错误消息后停止执行:

if(strlen($user) < 3)
{
    print "<span id='wrong'>username is too short</span>";
    die(); //Stop right here
}

好吧,您可以通过多种方式解决它,但对于初学者来说,我建议您以 JSON 而不是 HTML 的形式发送响应,并在客户端处理格式。

区分成功和错误的一种简单方法是在服务器上设置适当的 HTTP 状态代码。

简而言之,只需在服务器上设置一个 4XX 或 5XX 代码,你最终会出现 jQuery ajax 错误/失败回调。

您的代码如下所示:

$.post('check/user_check.php',{ username: $("#name").val() }).done(function(data)
    //handle success
}).fail(function(error){
    //handle failure
    console.log(error.responseText);
});

在PHP代码中,您只需设置一个状态代码,在出现问题时指示错误:

header('HTTP/1.1 400 Bad Request', true, 400);

或者如果您使用的是 PHP>= 5.4:

http_response_code(400);

我在这里发布了关于这个主题的更详细的答案。

在 jquery 代码中使用 off() 来停止执行 off() 的文档: http://api.jquery.com/off/