首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在jquery中显示php文件返回的错误。

在jquery中显示php文件返回的错误。
EN

Stack Overflow用户
提问于 2020-07-28 14:59:28
回答 2查看 124关注 0票数 0

我正在尝试通过ajax获取数据。除了“错误处理程序”,一切都很好。每当我在php中出现错误时,我希望该错误被发送到html页面(javascript文件)。这不管用。

我在ajax中使用了成功。

我想要的是使用文件(第5行和第6行)中设置的msg和error (第5行和第6行)发出警报。

这是我的代码:

代码语言:javascript
运行
复制
$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

代码语言:javascript
运行
复制
$.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‘。

EN

回答 2

Stack Overflow用户

发布于 2020-07-28 15:12:33

代码语言:javascript
运行
复制
var arr = JSON.parse(response);
if(arr["status"] == "Error"){
alert(arr["error"]);
}
票数 0
EN

Stack Overflow用户

发布于 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事件错误。

代码语言:javascript
运行
复制
$.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 (内部服务器错误)。

就像这样:

代码语言:javascript
运行
复制
header_status(500);
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63137126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档