AJAX成功后回显PHP消息

时间:2015-02-24 21:13:37

标签: javascript php jquery ajax

我有一个模式,当用户点击删除按钮时会显示该模态。一旦他们点击删除按钮,我使用AJAX来分隔表单。 Eveything工作正常,但它不显示我在PHP中设置的成功消息。

这是我的AJAX代码:

function deleteUser(){
    var id = <?php echo $userdetails['id'] ?>;  
    $.ajax({
        type: "POST",
        url: 'admin_user.php?id=' + id,
        data: $('form.adminUser').serialize(),
        error: function(e){
                alert(e);
            },
        success: function () {
           // This is empty because i don't know what to put here.
        }
    }); 
}

这是PHP代码:

if ($deletion_count = deleteUsers($deletions)) {
        $successes[] = lang("ACCOUNT_DELETIONS_SUCCESSFUL", array($deletion_count));
    } else {
        $errors[] = lang("SQL_ERROR");
    }

然后我称之为:

<div class="col-lg-12" id="resultBlock">
   <?php echo resultBlock($errors,$successes); ?>
</div>

当我使用AJAX时,它不显示消息。这适用于其他不需要AJAX提交表单的页面。

5 个答案:

答案 0 :(得分:1)

我认为您对AJAX的工作方式感到困惑,您调用的PHP脚本不会直接输出到页面,请考虑以下简化的AJAX请求生命周期:

Main Page -> Submit Form -> Put form data into array
          |
          --> Send array to a script to be processed on the server
          |
          |----> Callback from the server script to modify DOM (or whatever you want to do)

有很多回调,但这里讨论successerror

如果在服务器上找不到您的PHP脚本或者有任何其他内部错误,则返回error回调,否则会触发success回调,在jQuery中您可以指定数据数组在回调中接收 - 这包含从PHP脚本回显的任何数据。

在您的情况下,您应该修改您的PHP文件以回显您的数组,这意味着如果成功请求,$successes$errors数组将回显到您的数据参数AJAX调用

if ($deletion_count = deleteUsers($deletions)) {
    $successes[] = lang("ACCOUNT_DELETIONS_SUCCESSFUL", array($deletion_count));
    echo $successes;
} else {
    $errors[] = lang("SQL_ERROR");
    echo $errors;
}

然后,您可以通过将对象登录到控制台来测试您收到的对象:

success: function(data) {
    console.log(data);
} 

答案 1 :(得分:0)

嗯,目前还不清楚什么是工作,什么不起作用,但有两件事让我困扰:Ajax成功的功能是空的,你有一个标题功能,可以刷新成功的例子。您是否尝试删除标题功能?

答案 2 :(得分:0)

success: function(data) {
     alert(data);
} 

如果成功,这将警告在php页面上回显的数据。这就是它的工作原理。 当我使用$ .post

时,我正在使用它

你的标题不会做任何事情。您必须在Java脚本端显示数据,可能带有警报,然后将用户重定向到您想要的javascript中。

答案 3 :(得分:0)

你需要在成功函数中添加一些var

success: function(data) {
  alert(data);
}

然后,当你阅读var&#34;数据&#34;你可以用文字做任何事情

答案 4 :(得分:0)

以下是我将PHP更改为:

if ($deletion_count = deleteUsers($deletions)) {
        $successes[] = lang("ACCOUNT_DELETIONS_SUCCESSFUL", array($deletion_count));
        echo resultBlock($errors,$successes);
    } else {
        $errors[] = lang("SQL_ERROR");
        echo resultBlock($errors,$successes);
    }

我将AJAX更改为:

function deleteUser(){
    var id = <?php echo $userdetails['id'] ?>;      
    $.ajax({
        type: "POST",
        url: 'admin_user.php?id=' + id,
        data: $('form.adminUser').serialize(),
        error: function(e){
                alert(e);
            },
        success: function (data) {
            result = $(data).find("#success");       
            $('#resultBlock').html(result);
        }
    }); 
}

因为数据正在加载所有html,我必须找到我正在寻找的HTMl,这就是我.find的原因。