【问题标题】:when passing JSON request ajax call failed传递 JSON 请求时 ajax 调用失败
【发布时间】:2015-08-14 22:49:43
【问题描述】:

我正在调用休闲功能

function checkUser(){
    $.ajax({
        type: "POST", 
        url: "assets/json/login.json",
        dataType: 'json',
        data: {name:"XYZ",status:'A'},          
        success: function(data)
        {
            obj = JSON.parse(data);
            alert(obj.status);
            if(obj.status == 200)
            {
                window.location='dashboard.html'
            }else
            {
                    $("#error").html(obj.msg);
                    return false;
            }

        },

     error: function(errorThrown){
            alert("There is an error with AJAX!" + errorThrown);
    } 
});

}

作为响应,error 函数被调用。 Json 文件包含状态和消息,例如 {status:"200",msg:"SUCCESS"}

编辑 我纠正了我的json。现在看起来像这样 {"status":"200","msg":"SUCCESS"} 现在它调用 Success 函数。但它在 obj = JSON.parse(data); 上给出以下错误;

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

这里的响应已经是 json 格式,所以我认为不需要解析它。那么如何显示状态呢?

【问题讨论】:

  • 尝试parseInt(obj.status)==200obj.status=='200'if
  • 你为什么要对本地资产执行POST
  • @Swordfish0321 — 为什么不呢?大多数 POST 请求都发送到本地 URL。向 static 文件发出 POST 请求会很奇怪,但假设 URL 仅因为末尾有 .json 而用静态文件处理,这是一个并不总是正确的假设.
  • 我不知道你在说什么。而且大多数“ajax” POST 请求当然不会转到本地 URL。

标签: javascript jquery ajax


【解决方案1】:

您期望 dataType 中有一个 JSON。您正在接收 JSON。所以不需要解析它。删除JSON.parse(data)

【讨论】:

  • 我试过了。但是它调用了错误函数而不是成功
  • login.json 究竟返回了什么?尝试console.log回复。
  • Json 文件会返回这样的状态 {status:200}
  • 首先我必须发布我的数据,如果交易成功完成,那么我会得到响应。所以我认为它不适用于这种情况
  • 所以也许这就是你做错了。你正在获取一个 json 文件,对吧?这只是数据。不是代码。为什么要将数据传递给其他数据?它只是一个 json,它不会对您传递的数据做任何事情。会是 PHP 文件还是什么,我会理解,但是将数据传递给 json 文件是没有意义的。
【解决方案2】:

将响应键设为字符串会有帮助吗?而不是

{status:"200",msg:"SUCCESS"}

你可以试试

{"status":"200","msg":"SUCCESS"}

【讨论】:

  • 是的。 JSON 属性名称必须是字符串,而不是标识符。 {status:"200",msg:"SUCCESS"} 不是 JSON,因此它无法解析 JSON 并触发错误处理。解决这个问题的正确方法是使用 JSON 库生成 JSON,而不是手动添加引号字符。
  • 如果我像上面那样写它,那么它会给出 SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data error
  • @Aanshi — 这是一个不同的问题。您已成功使其停止命中错误函数并改为调用成功函数。
  • 该死,我没有注意到这是一个无效的 json。我应该投反对票:)
  • @Aanshi — jQuery 将为您解析 JSON,传递给成功函数的值是结果,而不是 JSON 的原始字符串。由于它不是原始 JSON,因此您无法对其进行解析。
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 2015-06-22
  • 2017-04-02
  • 2018-11-30
相关资源
最近更新 更多