从Ajax JSON调用中仅返回特定值

时间:2014-06-04 20:15:08

标签: javascript jquery ajax json

我在从Ajax JSON调用中过滤返回的数据时遇到问题。现在,它返回:

{"results":[{"text":"RoboChat: What is it like to feel?","username":"RoboChat","createdAt":"2014-06-04T20:01:15.268Z","updatedAt":"2014-06-04T20:01:15.268Z","objectId":"wG2cs1OnVY"},

我试图让它只返回“text”对象,如下所示:

"RoboChat:What is it like to feel?"

这是我的代码:

function fetch () {
  $.ajax({
          url:"https://api.parse.com/1/classes/chats",
          type : 'GET',
          dataType : 'JSON',
          data : JSON.stringify({
          }),
          success:function(data) {
       $('.messages').append("<li>" + (JSON.stringify(data)) + "</li>") 
      }
  });
};

我已经尝试将过滤器传递给JSON.stringify,但没有成功,我甚至不确定这是否是接近过滤数据的方法。任何帮助都会非常感激。谢谢!

3 个答案:

答案 0 :(得分:2)

返回的JSON有一个results属性是一个数组,你可以遍历数组并读取每个元素的text属性:

$.each(data.results, function(index, element) {
     console.log(element.text);
});

要为每个数组的元素创建li元素,您可以使用$.map实用程序函数:

var li = $.map(data.results, function(element) {
    return '<li>' + element.text + '</li>';
});

$('.messages').append(li);

答案 1 :(得分:2)

您无法真正更改请求返回的内容,但您当然可以以任何方式使用结果值。由于响应包含多个具有text属性的对象,因此您必须迭代它们并提取文本:

success: function(data) {
    var results = data.results;

    results.forEach(function (result) {
        $('.messages').append("<li>" + result.text + "</li>");
    });
}

答案 2 :(得分:0)

尝试,数据有一个名为results的数组,你必须选择第一个如下:

success: function(data) {
    var results = JSON.parse(data).results;
    results.forEach(function (result) {
    $('.messages').append("<li>" + data.results[0].text + "</li>");
  });
}