ajax调用后处理php错误
问题描述:
我在使用Ajax调用php脚本时遇到了一些问题。 我有一个指向压制脚本的ajax。
这里是我的JS:ajax调用后处理php错误
$('.js-delete-link').click(function (e) {
e.preventDefault();
let id = $(this).closest('tr').find('.id').text();
if (confirm('Voulez-vous vraiment supprimer le message ?')) {
let href = $(e.currentTarget).attr('href');
$.ajax({
url:href,
type:'post',
success:function(data){
let msgJson = JSON.parse(data);
bootstrapNotify(msgJson.msg,msgJson.type);
},
})
}
});
,这里是我的PHP脚本在那里我居然删除的项目。
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_GET['id'])) {
$id = FILTER_INPUT(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if ($id === false) {
$arr = array("msg" => "Id incorrect ou non spécifié", "type" => 'danger');
} else {
if ($messageModelDb->delete($id)) {
$arr = array("msg" => "Le ou les messages ont été supprimés", "type" => 'success');
} else {
$arr = array("msg" => "Le message n'existe pas !", "type" => 'danger');
}
}
}
echo json_encode($arr);
} else {
$_SESSION['error'] = "Vous n'êtes pas autorisé.";
redirect('liste-messages');
}
在我的PHP我试图抓住可能在查询过程中出现任何错误,如果它发生了,我根据错误传递消息。
但是,无论我总是会得到一个成功的消息,即使该ID不存在。
对不起,如果这看起来完全明显,但我是新来的,我有点卡在这里!
谢谢你的帮助!
答
如果isset($ _ GET [“身份证”])是假的,什么都不会发生,因为你应该把else语句是这样的:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_GET['id'])) {
$id = FILTER_INPUT(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if (!$id) {
$arr = array("msg" => "Id incorrect ou non spécifié", "type" => 'danger');
} else {
if ($messageModelDb->delete($id)) {
$arr = array("msg" => "Le ou les messages ont été supprimés", "type" => 'success');
} else {
$arr = array("msg" => "Le message n'existe pas !", "type" => 'danger');
}
}
} else {
$arr = array("msg" => "ID is not set", "type" => 'danger');
}
} else {
$arr = array("msg" => "Invalid request method", "type" => 'danger');
}
echo json_encode($arr);
然后在JavaScript文件,你可以添加一个错误回调:
success: function(){
...
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus + " - Error: " + errorThrown);
}
答
据我所知,在FILTER_INPUT可能返回NULL太多,所以$id === false
会在这种情况下错误的。尝试使用if(!$id)
相反,如果你确定你的$ id不能为0
服务器端重定向,而做一个Ajax调用 – charlietfl
不会重定向浏览器页面谢谢你,我并没有意识到, – Simondebn