如何使用AJAX数据实现“订单”属性?

时间:2013-05-14 23:55:03

标签: javascript ajax get

我正在使用Parse API进行异步'GET'请求。 AJAX请求返回的字符串数组可能不是正确的顺序。我在Google上搜索了AJAX可能拥有的“订单”属性,但没有运气。

这是我的AJAX请求,作为一个名为retrieve的函数获取text属性的值。

AJAX请求:

Obj.retrieve = function(callBack) {
   $.ajax({
       url : 'https://api.parse.com/1/classes/messages',
       type : 'GET',
       dataType: 'JSON',
       contentType : 'application/json',
       data : JSON.stringify({   
           text : 'value: ',
           order: "-createdAt"          // Would the order property go here?        
       }),
       error : function(data) {
           console.log('error: ' + data);
       },
       success : function(data) {
          for (var i = 0; i < data["results"].length; i++)
             callBack(data["results"][i].text);
       }
   });
}; 

TL; DR :由于Parse,每个对象都有字段名称createdAt,updatedAt和objectId。理想情况下,我想将createdAt与订单一起使用。有什么建议?

4 个答案:

答案 0 :(得分:2)

可能的解决方案:

  1. 在服务器端对其进行排序

  2. 手动排序:

    data['results'].sort(function(a, b) {
        return a.createdAt < b.createdAt ? -1 : 1;
    });
    

答案 1 :(得分:1)

data请求中的$.ajax参数被发送到服务器;所以你可以在服务器上使用它来对结果进行排序。

如果您没有在服务器上排序,则需要对success:回调进行排序。建议你使用这样的东西:

Obj.retrieve = function(sortBy, callBack) {
    $.ajax({
        url : 'https://api.parse.com/1/classes/messages',
        type : 'GET',
        dataType: 'JSON',
        contentType : 'application/json',
        data : JSON.stringify({   
            text : 'value: ' // maybe not needed?
        }),
        error : function(data) {
            console.log('error: ' + data);
        },
        success: function (data) {
            data['results'].sort(function (a, b) {
                return a.sortBy - b.sortBy;
            });
            $.each(data['results'], function (n, v) {
                callBack(v.text);
            });
        });
};

警告:这是我脑子里编的。

您的使用方式类似于o.retrieve('createdAt', function () { });o.retrieve('updatedAt', function () { });o.retrieve('objectId', function () { });

答案 2 :(得分:1)

您可以使用订购方法作为数据类型并使用 - 。

 Obj.retrieve = function(callBack) {
   $.ajax({
       url : 'https://api.parse.com/1/classes/messages',
       type : 'GET',
       dataType: 'JSON',
       contentType : 'application/json',
       data : 'order=-createdAt', //REQUEST FROM NEWEST
       }),
       error : function(data) {
           console.log('error: ' + data);
       },
       success : function(data) {
          for (var i = 0; i < data["results"].length; i++)
             callBack(data["results"][i].text);
       }
   });
}; 

答案 3 :(得分:0)

http://api.jquery.com/jquery.getjson/我们读到:

  • 发送到服务器的数据作为查询字符串附加到URL。如果data参数的值是普通对象,则在将其附加到URL之前,它将转换为字符串并进行URL编码。

为此,我们应该能够将请求URL重做为: https://api.parse.com/1/classes/chats?order=createdAt