无法解析来自 jQuery Ajax POST 的 Json 结果

Posted

技术标签:

【中文标题】无法解析来自 jQuery Ajax POST 的 Json 结果【英文标题】:Can't parse Json result from jQuery Ajax POST 【发布时间】:2019-05-28 02:02:10 【问题描述】:

如果我将结果写入控制台并将其复制到字符串变量(jsonInput)中,我会通过 Ajax 从 REST API 获取 JSON。JSON.parse 工作正常,但如果我直接使用数据(ajax 结果)它是未定义的。我检查了两个变量并且相等?

let jsonInput = 
  '"pollId":49,
    "question":"sdf",
    "multipleAnswer":0,"answers":
     ["pollAnswerId":69,"answer":"sdf",
      "pollAnswerId":70,"answer":"fsdf"]'

console.log(data === jsonInput); //TRUE

json = JSON.parse(data); //undefined

json = JSON.parse(jsonInput); //succesfull parsed

【问题讨论】:

从下面的答案(?)来看,这是一个误解异步请求如何工作的问题。参考。 ***.com/questions/14220321/… 【参考方案1】:

不要将它作为字符串引用。这是一个对象。

let jsonInput = ...

【讨论】:

【参考方案2】:

虽然您还没有用完整的代码定义您的问题。 但这可能是 data 是字符串而不是 JSON 对象的原因之一。

【讨论】:

【参考方案3】:

我想我找到了主要问题,json 是用数据初始化的,但是外部的 .ajax json 是未定义的

       let json;
       $.ajax(
        url : "http://localhost:4040/api/"+id,
        type: "POST",
        success: function(data)
           console.log(data); //works fine
           json = data;
           console.log(json); //works fine
        
    );
    console.log(json); //undefined

【讨论】:

Ajax 是异步的。这是预期的行为。

以上是关于无法解析来自 jQuery Ajax POST 的 Json 结果的主要内容,如果未能解决你的问题,请参考以下文章

无法解析 JQuery ajax 调用返回的 JSON

从 JQuery.ajax 成功数据中解析 JSON

如何在 AJAX POST 请求后解析来自服务器的 JSON 响应?

使用 mail() PHP 脚本的 jQuery AJAX 表单发送电子邮件,但来自 HTML 表单的 POST 数据未定义

无法从 JQuery ajax 调用接收 JSON

POST 请求无法使用 JQuery AJAX