无法从json ajax请求中获取我的错误消息

时间:2014-11-11 17:20:09

标签: jquery ajax json error-handling

我使用$.ajax() jquery做一些ajax调用。最近我有一个ajax调用,返回json格式化的字符串成功调用。在我的服务器php代码中,如果有问题,我只返回一个字符串数据(die("nothing found in database");),非json格式化,这是一个解释问题的消息。 ajax调用正常,但我很难得到字符串响应。

以下是javascript代码:

$.ajax({
    url: "check.php",
    dataType: "json",
    data: {
        row_id : row_id
    },
    async: false
}).done(function(data) {
    check = data;
}).fail(function( jqXHR, textStatus, msg ){
    $('#dialog').html("<p>"+textStatus+"</p>");
    $('#dialog').dialog({
        modal: true,
        buttons: {
            "OK": function() {
                $( this ).dialog("close");
            }
        }
    });
});

.fail()函数中的3个变量都没有给出我从服务器发送的字符串响应。 textStatus只是给了我“解析错误”。 msg变量给出了:“意外的令牌T”。我想要的只是我从带有die()函数的.php文件发送的普通字符串。我测试以确保php正确发送字符串。有谁知道我应该如何得到我的字符串数据响应?

也许这不是处理此问题的正确方法。我在想因为ajax调用确实没有错误,只是我选择返回普通字符串而不是JSON,这是一个有问题的信号。

2 个答案:

答案 0 :(得分:1)

从ajax调用中删除 dataType:&#34; json&#34;,,并在使用前对响应字符串使用JSON.parse()。 因为如果解析JSON是问题,那么你会在这里得到错误。

但我怀疑这是不是问题。

答案 1 :(得分:0)

所以问题是你无法真正显示你的非json字符串吗?

在.fail函数中,我曾经这样写过,而且它一直有效:

 .fail(function(data) { /* handle data response */ });

只需显示数据。执行 console.log 数据)以查看它是否显示了您想要的内容。

编辑:当然,在PHP中也做一些其他测试,例如返回&#34;您的消息在这里。&#34 ;; echo &#39;您的留言&#39 ;;等