我在使用Ajax调用的php脚本中获取错误时遇到了一些麻烦。 我有一个指向抑制脚本的ajax 这是我的Js:
$('.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不存在,无论我总是得到成功的消息
对不起,如果这看起来很明显,但我对这一切都是新手,我有点被困在这里!
谢谢你的帮助!
答案 0 :(得分:1)
如果isset($ _ GET ['id'])为false,则不会发生任何事情,因为你应该像这样放上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);
}
答案 1 :(得分:0)
AFAIK,FILTER_INPUT也可以返回NULL,因此在这种情况下$id === false
将为false。如果您确定$ id不能为0,请尝试使用if(!$id)