【问题标题】:Jquery ajax issue, keep getting undefined as a result valueJquery ajax问题,不断得到未定义的结果值
【发布时间】:2016-11-21 16:43:03
【问题描述】:

我是一个使用 ajax 和 jquery 的 ajax 包装函数的新手。尝试从 API 获取 json 并将结果附加到我正在构建的网站的 html 中。

这是我的代码:

$.ajax({
    type : 'GET',
    url : 'api/v1/get_profesors.php',
    success : function(data){                                           
        var content = 'Name : '+data.name ;
        content += ' Surname : '+data.surname ;
        content += ' Bio : '+data.bio ;
        content += ' Instrument : '+data.instrument ;
        $("#profesori").append(content);
    }
});

我得到的结果是 Name : undefined Surname : undefined Bio : undefined Instrument : undefined.

哦,这是我从 API 接收的 JSON 的一部分:

{"id":7,"name":"adsssss","surname":"THERE I GO","bio":"Jupi","instrument":"Gitara","img":null}{"id":8,"name":"Andrija","surname":"Profesor","bio":null,"instrument":null,"img":null}

提前致谢。

【问题讨论】:

    标签: jquery json ajax


    【解决方案1】:

    在做这类事情时你必须牢记几件事:

    1. 正如Shubham Khatri 所建议的那样。在 ajax 成功调用中使用 console.log(data) 检查 API 响应。

    2. 您从 api 获得的响应是​​错误的。它应该是array of objectsobject of arrays

    错误:

    var data = {"id":7,"name":"adsssss","surname":"THERE I GO","bio":"Jupi","instrument":"Gitara","img":null}{"id":8,"name":"Andrija","surname":"Profesor","bio":null,"instrument":null,"img":null} 
    

    更正:

    var data = [
                 {"id":7,"name":"adsssss","surname":"THERE I GO","bio":"Jupi","instrument":"Gitara","img":null},
                 {"id":8,"name":"Andrija","surname":"Profesor","bio":null,"instrument":null,"img":null} 
               ];
    

    3.在你的ajax成功函数中你必须loopdata array因为它有两个对象。

    for (var i in data) {
      console.log('Name : '+data[i].name);
    }
    

    输出:

    Name : adsssss
    Name : Andrija
    

    【讨论】:

      【解决方案2】:

      首先确保通过在ajax 成功调用中使用console.log(data) 从API 获得JSON 作为响应。

      然后你需要使用JSON.parse()解析接收到的JSON

       $.ajax({
           type : 'GET',
           url : 'api/v1/get_profesors.php',
           success : function(data){
               var data = JSON.parse(data);
               var content = 'Name : '+data.name ;
               content += ' Surname : '+data.surname ;
               content += ' Bio : '+data.bio ;
               content += ' Instrument : '+data.instrument ;
               $("#profesori").append(content);
           }
      });
      

      【讨论】:

        【解决方案3】:

        请尝试data[0].name 等回复。

        【讨论】:

        • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
        • @indramurari 你的批评
        【解决方案4】:

        请使用 ajax 中的 datatype 作为 dataType: "json",请看下面的例子。

        $.ajax({ 类型:“发布”, 网址:hb_base_url +“消费者”, 内容类型:“应用程序/json”, 数据类型:“json”, 数据:JSON.stringify({ first_name: $("#namec").val(), 姓氏:$("#surnamec").val(), 电子邮件:$("#emailc").val(), 手机:$("#numberc").val(), 密码:$("#passwordc").val() }), 成功:功能(响应){ 控制台日志(响应); }, 错误:函数(响应){ 控制台日志(响应); } });

        【讨论】:

          猜你喜欢
          • 2013-01-09
          • 1970-01-01
          • 1970-01-01
          • 2015-05-16
          • 2016-10-05
          • 1970-01-01
          • 2020-10-05
          • 2015-08-21
          • 1970-01-01
          相关资源
          最近更新 更多