所以基本上,我想在我的注册表单中添加一个功能,我将检查该用户名是否已存在于数据库中.
我有几个关于AJAX的问题 -
1)我想创建一个AJAX请求on_change函数,所以像这样 -
$('#username').change(function() {
$.ajax({
url: "validation.php"
});
});
Run Code Online (Sandbox Code Playgroud)
所以,据我所知,我必须在validation.php文件中使用PHP进行所有验证,对吗?是否需要任何特殊验证,或者只是使用sql语句进行简单验证 - SELECT * FROM 'users' WHERE 'username' = '. $_POST['username'];
2)据我所知,我必须通过$ .ajax传递POST值,对吗?如果是,我将如何通过validation.php文件访问它们?
3)我在validation.php文件中得到结果后,如何将它们传回(真或假 - 存在或不存在)?我需要将它们传回去,然后进行if检查,如果是真的 - 显示用户名已存在的错误,否则,不显示任何内容?
希望,你了解我即将创造的东西.我知道互联网上有很多教程,但我不喜欢通过教程创建一些东西,因为如果我自己创建它,下次会更容易理解;)!
编辑:另外,我正在使用CodeIgniter框架创建我的网站,那么我如何将ajax中的url属性传递给CodeIgniter模块?
Aus*_*rst 10
在继续之前,SELECT * FROM 'users' WHERE 'username' = '. $_POST['username'];只需要SQL注入.我建议你使用PHP数据对象 - http://php.net/manual/en/book.pdo.php.
据我所知,我必须通过$ .ajax传递POST值,对吗?如果是,我将如何通过validation.php文件访问它们?
因为这是一个简单的请求,我建议你使用JQuery的方法$.post().这是一个基于你想要做的事情的样本.
$.post('validation.php',{username: $('#username').val()}, function(data){
if(data.exists){
//tell user that the username already exists
}else{
//username doesn't exist, do what you need to do
}
}, 'JSON');
Run Code Online (Sandbox Code Playgroud)
jQuery的post方法有4个参数$.post(url, data, callback, datatype).在上面的示例中,我们将使用$('#username').val()to 发布用户名validation.php并期望JSON响应.请求完成后,回执函数将作为data请求的响应执行.因为我们指定了响应JSON,所以我们可以像javascript中的本机对象一样访问它.现在让我们转到validation.php
就像我上面所说的,我建议你使用PDO作为数据库驱动程序.所以在这个例子中,我将向您展示它的基本用法.
//set the headers to be a json string
header('content-type: text/json');
//no need to continue if there is no value in the POST username
if(!isset($_POST['username']))
exit;
//initialize our PDO class. You will need to replace your database credentials respectively
$db = new PDO('mysql:host=DATABASE_HOST;dbname=DATABASE_NAME','DATABASE_USERNAME','DATABASE_PASSWORD',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
//prepare our query.
$query = $db->prepare('SELECT * FROM users WHERE username = :name');
//let PDO bind the username into the query, and prevent any SQL injection attempts.
$query->bindParam(':name', $_POST['username']);
//execute the query
$query->execute();
//return the json object containing the result of if the username exists or not. The $.post in our jquery will access it.
echo json_encode(array('exists' => $query->rowCount() > 0));
Run Code Online (Sandbox Code Playgroud)
现在回顾一下,我们的jQuery脚本将发布到validation.php从数据库中选择用户名的位置.它将返回一个JSON对象,该对象具有一个exists布尔值,表示用户名是否已作为数据库中的行存在.通过jQuery完成请求后,您可以根据查询结果执行所需操作.我希望这是一个彻底的解释,并引导您达到您希望实现的目标.
| 归档时间: |
|
| 查看次数: |
43369 次 |
| 最近记录: |