Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX成功的原因:JSON数据是;“无效”;_Javascript_Jquery_Json_Ajax_Flask - Fatal编程技术网

Javascript AJAX成功的原因:JSON数据是;“无效”;

Javascript AJAX成功的原因:JSON数据是;“无效”;,javascript,jquery,json,ajax,flask,Javascript,Jquery,Json,Ajax,Flask,我很困惑,为什么我的名为JSON数据的烧瓶没有被其他地方运行良好的ajax成功等待语句读取。我意识到这是成功的:语句应该等待数据返回,但返回的数据不能像任何JSON一样访问。没有控制台或浏览器控制台错误来指示数据被视为“无效”的原因 烧瓶功能 @blueprint.route('/target_liner') def target_liner(): ind_id = int(request.args.get('ind_id')) label = "1508 Loss

我很困惑,为什么我的名为JSON数据的烧瓶没有被其他地方运行良好的ajax成功等待语句读取。我意识到这是成功的:语句应该等待数据返回,但返回的数据不能像任何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数据

[{“程序名称”:“1508丢失更正”}]
//这是经确认的合法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();

你有三种可能:

  • 在烧瓶中,将返回数据更改为返回jsonify(数据)
  • 根据@Rocket Hazmat的评论,在ajax调用中添加数据类型:“json”,
  • 将从字符串到json的转换添加到success响应中:data=json.parse(data)
  • $.ajax({
    url:“/target\u line”,
    方法:“获取”,
    数据:{
    识别号:1508
    },
    成功:功能(数据){
    data=JSON.parse(数据);
    控制台日志(数据);
    console.log(Object.keys(数据[0])[0]);//打印:程序名
    console.log(数据[0]。程序名称);//打印:1508丢失更正
    }
    });
    
    返回的数据是一个字符串。您可以在成功后执行JSON.parse(数据),也可以在ajax请求中使用数据类型:“JSON”。如果在使用数据类型“JSON”时JSON字符串的格式不正确,则可能会出现解析错误。

    您的
    数据
    是一个字符串。它没有被解析成一个对象。尝试向
    $.ajax({})
    调用添加
    数据类型:“json”
    。立即解决了问题。我以前试过这个,但一个不相关的问题让我把它取了下来——thx火箭@RocketHazmatOr第四,只需使用
    $.getJSON()