【问题标题】:Can't get my error message from json ajax request无法从 json ajax 请求中获取我的错误消息
【发布时间】:2015-01-08 08:10:00
【问题描述】:

我使用$.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 只是给了我“parseerror”。 msg 变量给我:“意外的令牌 T”。我想要的只是我使用die() 函数从.php 文件发送的纯字符串。我测试以确保 php 正确发送字符串。有谁知道我应该如何获得我的字符串数据响应?

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

【问题讨论】:

  • fail 中添加一个alert(textStatus),看看你得到了什么。如果 &lt;p&gt; 中的值无效,则可能导致 html() 行失败。

标签: jquery ajax json error-handling


【解决方案1】:

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

但我怀疑这是否是问题所在。

【讨论】:

    【解决方案2】:

    所以问题是你不能真正显示你的非json字符串?

    在.fail函数中我习惯这样写,一直有效:

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

    并简单地显示数据。执行 console.log(data) 以查看它是否显示您想要的内容。

    编辑:当然,在 PHP 中也做一些其他测试,例如 return "Your message here.";, echo 'Your信息';等等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 1970-01-01
      相关资源
      最近更新 更多