【问题标题】:Stumped why Javascript AJAX Success: JSON data is "invalid"难倒为什么 Javascript AJAX 成功:JSON 数据“无效”
【发布时间】:2020-08-20 22:12:09
【问题描述】:

我很困惑为什么我的 Flask 调用 JSON 数据没有被 ajax 成功等待语句读取,该语句在其他地方运行良好。我意识到 Success: 语句应该等待数据返回并且确实如此,但是返回的数据不能作为任何 JSON 访问。没有控制台或浏览器控制台错误表明数据被视为“无效”的原因

烧瓶功能

@blueprint.route('/target_liner')
def target_liner():

    ind_id = int(request.args.get('ind_id'))
    label = "1508 Loss Correction"
    data = '[{"Program_Name":"' + label + '"}]'
    return data

JSON 数据

[{"Program_Name":"1508 Loss Correction"}] //这是确认合法的JSON

Javascript

function updates() {
      $.ajax({
          url: "/target_line",
          method: "GET",
          data: {
              ind_id: 1508
          },
          success: function (data) {
            
            console.log(data);
            alert(data);  // This shows the JSON string correctly in Chrome Inspect console

            alert(data.Program_Name);
            alert(data[0]['Program_Name']);
            alert(data[0].Program_Name );
      }
    });
};

updates();

【问题讨论】:

  • 您的data 是一个字符串。它没有被解析成一个对象。尝试将dataType: "json", 添加到您的$.ajax({}) 通话中。
  • 立即解决了问题。我以前试过这个,但一个不相关的问题让我把它删除了——谢谢 Rocket! @RocketHazmat

标签: javascript jquery json ajax flask


【解决方案1】:

返回的数据是一个字符串。您可以在成功后执行 JSON.parse(data) ,也可以在 ajax 请求中使用 dataType: 'json' 。如果在使用 dataType: 'json' 时 JSON 字符串格式不正确,则可能会出现解析错误。

【讨论】:

    【解决方案2】:

    你有三种可能:

    1. 在您的烧瓶中将 return data 更改为 return jsonify(data);
    2. 根据@Rocket Hazmat 的评论将 dataType: "json", 添加到您的 ajax 调用中;
    3. succes 响应中添加从字符串到 json 的转换:data = JSON.parse(data);
    $.ajax({
        url: "/target_line",
        method: "GET",
        data: {
            ind_id: 1508
        },
        success: function (data) {
    
            data = JSON.parse(data);
            console.log(data);
    
            console.log(Object.keys(data[0])[0]);  // print: Program_Name
            console.log(data[0].Program_Name );    // print: 1508 Loss Correction
        }
    });
    

    【讨论】:

    • 或者第四个就用$.getJSON()
    猜你喜欢
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 2011-07-19
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多