2016-11-21 67 views
1

我是使用ajax和jquery的ajax包装函数的总新手。尝试从API获取json并将结果追加到我正在构建的网站的html中。Jquery ajax问题,不断得到undefined作为结果值

这里是我的代码:

$.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); 
    } 
}); 

这我越来越被名称结果:未定义姓:未定义简介:未定义的仪器:未定义

哦,这里是我正在从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} 

在此先感谢。

回答

1

几件事情要解析接收到的JSON你必须记住,在做这种类型的东西:

正如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} 
      ]; 

在你ajax成功的功能,你必须loopdata array,因为它是有它的两个对象。

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

输出:

Name : adsssss 
Name : Andrija 
0

尝试data[0].name等你的回应。

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/评论/低质量帖/ 14352113) – Nikhil

+0

@indramurari你为你的评论 –

1

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

然后,你需要使用JSON.parse()

$.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); 
    } 
}); 
0

请使用数据类型在阿贾克斯的数据类型: “JSON”,请参见下面的例子。

$阿贾克斯({ 类型: “POST”, 网址:hb_base_url + “消费者”, 的contentType: “应用/ JSON”, 数据类型: “JSON”, 数据:JSON.stringify({ 姓氏:$(“#namec”)。val(), 姓氏:$(“#姓氏”).val(), 电子邮件:$(“#emailc”)。val(), mobile:$(“#numberc”)。val(), password:$(“#passwordc”).val() }), success:function(response){ console.log响应); }, error:function(response){ console.log(response); } });