我想计算提交表单的数量,当计数达到3. Ajax应该显示错误消息。
我尝试过为会话分配计数,当计数为> 3我只是给错了查询(如果查询中有语法错误,ajax显示错误)
我的ajax
$.ajax({
url:'vals/process.php',
data:$(this).serialize(),
type:'POST',
success:function(data){
console.log(data);
swal("Thank you", "success :)", "success");
},
error:function(data){
swal("Sorry", "error", "error");
}
});
这是我的php
$_SESSION['limitRequest'] = 0;
if($_SESSION['limitRequest'] < 3){
$SQL = "insert into packageorder( id, name) values( '$id', '$name' )";
$_SESSION['limitRequest']++;
}
else{
$SQL = "exceed the limit";
}
$Query = mysqli_query($connecDB,$SQL);
从逻辑上讲,我认为这种方法应该可行,但我认为它并没有增加$_SESSION['limitRequest']
的价值。
我们如何解决这个问题?如果我的方法不可用,我如何限制用户在ajax中提交这么多请求?
答案 0 :(得分:3)
不要在每次执行时设置$_SESSION['limitRequest'] = 0
,而是尝试使用
if ( ! isset($_SESSION['limitRequest'] ) {
$_SESSION['limitRequest'] = 0;
}
if($_SESSION['limitRequest'] < 3){
$SQL = "insert into packageorder( id, name) values( '$id', '$name' )";
$_SESSION['limitRequest']++;
} else {
$SQL = "exceed the limit";
}
$Query = mysqli_query($connecDB,$SQL);
返回错误条件也更好,而不仅仅是在超出限制时使查询失败的东西。
if ( ! isset($_SESSION['limitRequest'] ) {
$_SESSION['limitRequest'] = 0;
}
if($_SESSION['limitRequest'] < 3){
$SQL = "insert into packageorder( id, name) values( '$id', '$name' )";
$_SESSION['limitRequest']++;
} else {
$res = new stdClass();
$res->error = true;
$res->errorMsg = "exceed query limit";
echo json_encode($res);
exit;
}
$Query = mysqli_query($connecDB,$SQL);
$res = new stdClass();
$res->error = true; // default status
if ( $Query ) {
$res->error = false;
$res->msg = "Update OK";
} else {
$res->error = true;
$res->msg = "Query Failed";
}
echo json_encode($res);
exit;