我正在使用ajax进行小型表单验证。用户提供一个密钥,当表单提交时,我调用ajax方法validate_key。
我的功能是
function validate_key(){
$key = $_POST['key'];
$id = $this->uri->segment(3);
$query = $this->db->get_where('mc_boxes', array('idmc_boxes' => $id));
$row = $query->row();
$download_key = strtolower($row->downloadkey);
if($download_key == $key){
return true;
}
else{
return false;
}
}
JQuery是
$(document).ready(function() {
$('#submit').click(function() {
var key = $('#downloadkey').val();
var dataString = {KEY:key};
$.ajax({
url: "/index.php/home/validate_key",
type: 'POST',
data: dataString,
success: function(msg) {
}
});
return false;
});
});
形式为
<form name="form" method="post">
<input id="downloadkey" name="downloadkey" type="text" />
<input type="submit" id="submit" name="submit" value="submit"/>
</form>
我检查用户提供的数据库密钥,如果密钥正确,允许用户查看页面,并在会话中设置密钥,如果错误,则发出警报消息并再次呈现表单
我如何检查响应?
感谢
我想您需要echo从您的PHP页面
if($download_key == $key){
echo "true";
}
else{
echo "false";
}
然后,在Ajax成功处理程序中,您可以检查回调中的响应。通过调用preventDefault()
函数,确保您也在阻止默认操作,这样页面就不会被发布。
$(document).ready(function() {
$('#submit').click(function(e) {
e.preventDefault();
var key = $('#downloadkey').val();
var dataString = {KEY:key};
$.ajax({
url: "/index.php/home/validate_key",
type: 'POST',
data: dataString,
success: function(msg) {
if(msg=="true")
{
alert("do something")
}
else
{
alert("do something else")
}
}
});
});
});
您需要向页面输出一些内容。如果只使用return true
或return false
,则不会有任何输出。
所以做一些类似的事情:
echo "OK"
然后您可以在javascript:中执行此操作
if(msg == "OK"){ .. }
您可以做的另一件事是返回HTTP状态代码,例如
header("HTTP/1.1 200 OK");
您可以在jquery中检查此项。然而,使用第一种方法更有用,因为页面上可以有任意数量的输出,包括不同的错误消息等等。