我有一个模式,当用户点击删除按钮时会显示该模态。一旦他们点击删除按钮,我使用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提交表单的页面。
答案 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)
有很多回调,但这里讨论success
和error
如果在服务器上找不到您的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
的原因。