7

所以我最近才开始使用 ajax 和 jQuery。我想知道是否可以限制或指定您想要从响应中返回的内容。

所以说我有以下,我只想得到前 3 个人或 100 个人中的最后 3 个人。

$.ajax({
   type: "GET",
   url: "/people"
   dataType: "json",
   success: function(data) {
      // Do some awesome stuff.
   }
});

现在,我知道您可以传递和可选数据对象。这个数据对象可以用来限制或指定我想要的响应吗?

谢谢你的帮助!

4

6 回答 6

10

您应该在服务器端进行过滤。传递参数使用data

$.ajax({
   type: "GET",
   url: "/people",
   data: {limit: 3, order: 'desc'}, 
   dataType: "json",
   success: function(data) {
      // Do some awesome stuff.
   }
});

然后在服务器端,根据limitand返回响应order

于 2012-10-20T03:34:52.553 回答
3

是的,您将使用“数据”参数将参数传递回您的服务器,指示您想要返回哪些记录。我通常使用分页来获取第 1-10 行或第 21-30 行。这要求您的服务器逻辑从参数值中了解它需要返回正确数量的数据。如果您无法控制它(服务器总是向您发送 100 条记录),那么在您的成功处理程序中,您将手动提取您想要的 3 条记录。

$.ajax({
 type: "GET",
 url: "/people"
 dataType: "json",
 data: {
   minRow: 1,
   maxRow: 10
 },
 success: function(data) {
    // Do some awesome stuff.
 }
});
于 2012-10-20T03:37:12.487 回答
2

您必须根据您的响应类型限制服务器端的结果。如果响应是 JSON 格式,您可以创建一个 for 循环,使其在第 3 个结果处停止。我会亲自去服务器端,因为我会减少响应大小。

于 2012-10-20T03:34:34.600 回答
2

如果您选择在客户端执行此操作:

成功回调的第一个参数是从服务器返回的数据。

由于您期望从服务器返回的数据类型是 JSON,因此将返回一个 JavaScript 对象。您将像在 JavaScript 中通常那样访问前 3 个人或最后 3 个人。

例如,如果来自服务器的响应采用以下形式:

{ 
    "people" : [
        { name: "Foo" },
        { name: "Bar" },
        { name: "Baz" },
        // and so on...
    ]
} 

您可以像这样访问前 3 个人或后 3 个人:

$.ajax({
   type: "GET",
   url: "/people"
   dataType: "json",
   success: function(data) {
      // Assuming there are 100 people in the "people" array
      // The first three people 
      console.log( data.people[0] ); // "Foo"
      console.log( data.people[1] ); // "Bar"
      console.log( data.people[2] ); // "Baz"

   } 
});
于 2012-10-20T03:52:35.760 回答
1

如果我理解得很好......

我通常在 ajax 请求中发送数据。在你的情况下,我会发送这个:

 url:'addres'
 data: 'from='+value_from+'&to='+to;
 type:'post'

在服务器端,您可以从和到,或类似的东西(如果需要,或其他选项),并以您想要的结果响应

于 2012-10-20T03:38:05.217 回答
0

我完全同意@xdazz 的回答,但是如果您使用外部资源并且无权访问服务器端脚本,那么您可以采用这种方法,这对我的解决方案很有帮助。在你的 for 循环中添加:

for (var i = 0; i < 5 && i < response.data; i++) {

//Response is limited to five. 
//example: 
var items = response[i].data.items

};

这有点像传统方法,但有效。

于 2021-08-23T06:58:53.833 回答