Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX成功后回显PHP消息_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript AJAX成功后回显PHP消息

Javascript AJAX成功后回显PHP消息,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个模式,当用户单击删除按钮时将显示。一旦他们点击删除按钮,我就用AJAX来限制表单。一切正常,但不是用PHP设置的显示我的成功消息 以下是我的AJAX代码: 然后我这样称呼它: <div class="col-lg-12" id="resultBlock"> <?php echo resultBlock($errors,$successes); ?> </div> 当我使用AJAX时,它不会显示消息。这在其他不需要AJAX提交表单的页面上也

我有一个模式,当用户单击删除按钮时将显示。一旦他们点击删除按钮,我就用AJAX来限制表单。一切正常,但不是用PHP设置的显示我的成功消息

以下是我的AJAX代码:

然后我这样称呼它:

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


当我使用AJAX时,它不会显示消息。这在其他不需要AJAX提交表单的页面上也可以使用。

好吧,不清楚哪些有效,哪些无效,但有两件事困扰着我:AJAX中的success函数是空的,如果成功,您有一个header函数进行刷新。您是否尝试过删除标题功能

success: function(data) {
     alert(data);
} 
如果成功,这将提醒php页面上的回显数据。这就是它的工作原理。 当我使用$.post时,我经常使用这个


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

您需要在success函数中添加一些var

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

<> P>那么,当你阅读VAR“数据”时,你可以对文本

做任何事情。我认为你对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)
有许多回调,但这里让我们讨论
成功
错误

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

在您的情况下,应该修改PHP文件以回显数组,这意味着如果请求成功,
$successions
$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);
} 

以下是我将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);
        }
    }); 
}
函数deleteUser(){
变量id=;
$.ajax({
类型:“POST”,
url:'admin_user.php?id='+id,
数据:$('form.adminUser').serialize(),
错误:函数(e){
警报(e);
},
成功:功能(数据){
结果=$(数据);
$('#resultBlock').html(结果);
}
}); 
}

因为数据加载了所有的html,所以我必须准确地从html中找到我想要的内容,这就是为什么我这样做了
。find

您的success函数是空的。您希望消息自动显示在哪里?header()调用没有意义。即使它确实有效,您也不会重定向用户的浏览器,而是重定向ajax请求,用户永远看不到这些请求。@我不知道成功函数中应该包含什么。我更新了上面的代码以显示消息的显示位置。基本上是在div的页面顶部。@MarcB我想在页面上显示消息,然后重定向。我不想使用警报。我希望它显示在引导警报div中,然后重定向,这就是我使用标题的原因。我删除了它,因为似乎每个人都在关注错误的事情。是的,我删除了它,但它仍然不起作用。success函数为空的原因是因为我不知道如何在bootstrap alert div中显示php错误具有良好的值。您应该检查success函数可能使用的不同原型,以了解如何获得php脚本所需的数据。您还应该使用网络分析器(在Chrome->Tools->Developpper Tools中提供)查看PHP返回的内容。从技术上讲,解决该问题的方法是
数据
再次输出整个页面。我如何显示这个
resultBlock($errors,$successfulls)嗯,你怎么知道数据是由Ajax请求的,而不是直接访问页面?我不知道你的意思。当我使用Firebug查看POST响应时,它显示警报在那里,但它没有显示在页面上。它仍然在警报中加载整个页面html。我做了一些编辑,但根据您的评论,我能够对其进行一些修改。看看我的答案。谢谢!我想做正确的事情,所以我不确定我是否应该将你的答案标记为正确答案?如果你觉得我的答案指向了你的解决方案,那么接受它作为正确答案将是非常好的
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);
    }
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);
        }
    }); 
}