1

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

这是我的 AJAX 请求,作为一个名为检索文本属性值的函数。

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

4 回答 4

1

可能的解决方案:

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

  2. 手动排序:

    data['results'].sort(function(a, b) {
        return a.createdAt < b.createdAt ? -1 : 1;
    });
    
于 2013-05-14T23:58:26.453 回答
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 () { });

于 2013-05-15T01:47:19.247 回答
1

您可以只使用 order 方法作为您的数据类型并使用 -。

 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);
       }
   });
}; 
于 2015-12-11T20:06:30.143 回答
0

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

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

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

于 2014-03-09T19:28:00.067 回答