我正在尝试通过ajax获取数据。除了“错误处理程序”,一切都很好。每当我在php中出现错误时,我希望该错误被发送到html页面(javascript文件)。这不管用。
我在ajax中使用了成功。
我想要的是使用文件(第5行和第6行)中设置的msg和error (第5行和第6行)发出警报。
这是我的代码:
$result = mysqli_query($conn, $sql);
if (!$result || mysqli_num_rows($result) == 0) {
$resp = array(
'status' => "Error",
'msg' => "Error Msg",
'error' => mysqli_error($conn)
);
echo json_encode($resp);
die();
} else {
while ($row = mysqli_fetch_array($result)) {
$id = $row['id'];
// $ownId = $row['own_id'];
$name = $row['name'];
$geraet = $row['manuf'].' '.$row['model'];
$fail = $row['fail'];
$abg_dat = $row['pick_date'];
$status = $row['status'];
$return_arr[] = array("id" => $id,
"name" => $name,
"geraet" => $geraet,
"fail" => $fail,
"abg_dat" => $abg_dat,
"status" => $status
);
}
$resp = array(
'status' => "Succ" ,
'msg' => "Daten erfolgreich abgerufen",
'resp' => $return_arr
);
echo json_encode($resp);
}
JS
$.ajax({
url: `${phpDir}/inc/techniker.inc.php`,
type: 'get',
dataType: 'JSON',
success: function(response){
if (response['status'] == "Error") {
alert(response['status'] + "<br/>" + response['error']);
} else {
var len = response['resp'].length;
var rspKey = response['resp'];
for(var i=0; i<len; i++){
var id = rspKey[i].id;
var name = rspKey[i].name;
var geraet = rspKey[i].geraet;
var stoerung = rspKey[i].fail;
var abgabe = rspKey[i].abg_dat;
var status = rspKey[i].status;
// example on muliple rows
// var username = response[i].username;
var tr_str = `
<tr id="${id}" onclick="tabCaller(${id})">
<td>#${id}</td>
<td>${name}</td>
<td>${geraet}</td>
<td>${stoerung}</td>
<td>${abgabe}</td>
<td>${status}</td>
</tr>
`;
$("#techniker_tbody").append(tr_str);
}
}
}
});
更新当mysqli错误发生时,php在发送响应之前破坏并显示错误。这就是为什么我没有得到‘错误’或者'msg‘。
发布于 2020-07-28 15:12:33
var arr = JSON.parse(response);
if(arr["status"] == "Error"){
alert(arr["error"]);
}
发布于 2020-07-28 15:17:53
雅利安说的是对的。您可以参考以下内容,对此有很好的解释。How to trigger jquery.ajax() error callback based on server response, not HTTP 500?
当您的"webservice“返回400、401、403、405或5XX jQuery ajax事件时,将触发ajax事件错误。
$.ajax({
url: `${phpDir}/inc/techniker.inc.php`,
type: 'get',
dataType: 'JSON',
success: function(response){
...
},
error: function(error) {
// alert, append to body
}
});
只需确保发送带有响应的http头。mysql错误导致HTTP 500 (内部服务器错误)。
就像这样:
header_status(500);
...
https://stackoverflow.com/questions/63137126
复制相似问题