首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在通过ajax调用php函数之后,如何应用其结果来检查另一个提交

问在通过ajax调用php函数之后,如何应用其结果来检查另一个提交
EN

Stack Overflow用户
提问于 2015-08-27 11:13:13
回答 1查看 26关注 0票数 0

如果用户不被禁止,用户可以在这里发表评论。所以我有一个php函数来检查被禁止的用户。如果评论表单提交,ajax调用第一次检查此用户是否被禁止。如果没有:评论将提交,否则显示按摩。

在这里,我不能提交任何评论,如果禁止或不,网页刷新,如果我试图提交。In也不能理解如何应用我的banneduser()响应来检查表单提交。

php函数:(我不想改变它,因为我用了更多的例子)

代码语言:javascript
复制
//user name banned by user
function Banned($user){
global $db;
  if(!get_magic_quotes_gpc()){
     $touser = addslashes($user);
  }
  $byuser = $_SESSION['user'];
  $result = mysqli_query($db,"SELECT * FROM blocking WHERE byname = '$byuser' AND toname = '$touser'") or die(mysqli_error($db));
  return (mysqli_num_rows($result) > 0);
}

Ajax:

代码语言:javascript
复制
// check banned user
function banneduser(){
var Bauthor = $("#author").attr("value");
    $.ajax({
        type: "POST", 
        url: "../common", 
        data: "action=Banned&user="+ Bauthor,
        success: function(data){
            // How to play with this data
            if(data){
            return false;
            }
        }
    });
    return false;
}

//comment submit if user not banned
$(".reply").on("click",function(){
    if(banneduser()){
         // make form submission
    } else { // You are banned}
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-27 11:21:15

AJAX请求是异步的,这意味着代码的其余部分(即return false将在响应处理之前执行)。这意味着banneduser()将始终返回false。

您应该做的是将回调函数传递给banneduser,然后在接收到AJAX响应后执行该函数:

代码语言:javascript
复制
function banneduser(callback){
var Bauthor = $("#author").attr("value");
    $.ajax({
        type: "POST", 
        url: "../common", 
        data: "action=Banned&user="+ Bauthor,
        success: function(data){

          callback(data)

        }
    });
    return false;
}

//comment submit if user not banned
$(".reply").on("click",function()
{

    banneduser(function (is_banned)
    {

      if (is_banned)
      {
        // You are banned
      }

      else
      {
        // Submit form
      }

    }
    )

});

不过,这个脚本很容易被黑。对于一个知道自己在做什么的访问者来说,更改#author的值是微不足道的,直到他找到一个有用的值为止。您应该使用纯服务器端解决问题的解决方案(即存储作者值的会话变量)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32247869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档