在开始循环之前,可以在jQuery中快速完成吗?或者我是否还需要在数据响应中设置一个单独的组,总计数为......第一个变量?
常见的回答如下所示:
[
{"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"}
,{"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"}
]
但是我会使用jQuery返回2
作为总计数(在我循环遍历它们之前吗?)或者我需要做这样的事情吗?
[
{"total":"2"}
,{"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"}
,{"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"}
]
这样做最有效/最普遍(以优化方式)的方式是什么?
答案 0 :(得分:7)
在json解码之后,您将获得一系列对象(来自您发布的内容)。您始终可以访问该length
属性以获取总计数。
由于你有这个数组,我假设你已经能够将json响应解析为JS对象。您可以使用dataType: 'json'
告诉jQuery自动为您执行此操作,或者您可以使用jQuery.parseJSON()
自行解析,但如果您设置dataType:'json'
或将content-Type
标头设置为来自服务器的application/json
。
所以你可以做这样的事情
$.ajax({
....
dataType: 'json',
success(function(data){
if(data){
var total = data.length;
}
}
});
所以你不需要从服务器发回total count
。在获得响应之后,您可以使用JS获得它,这将使您更容易使用$.each
遍历该响应,因为整个数组包含相同类型的对象(没有任何特殊的{"total":"2"}
成员)
注意: length
属性是Pure vanilla JS,它与jQuery
无关。
答案 1 :(得分:1)
在javascript中,你不操纵JSON(这是一个数据交换标准),而是javascript对象。
您通常使用
获取此对象var data = JSON.parse(mystring)
或者仅仅因为你的data
是jquery ajax调用的成功函数的参数:
$.ajax(
....
dataType:'json',
success(function(data){
})
解析后,你拥有的是一个javascript对象。
在你的情况下,它是一个数组,所以你可以进行标准操作:
var length = data.length;
var secondObject = data[1];
var firstObjectName = data[0].name;
///etc.