Javascript AJAX成功后回显PHP消息
我有一个模式,当用户单击删除按钮时将显示。一旦他们点击删除按钮,我就用AJAX来限制表单。一切正常,但不是用PHP设置的显示我的成功消息 以下是我的AJAX代码: 然后我这样称呼它: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提交表单的页面上也
<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);
}
});
}