我正在编写一个ajax实时搜索框,返回的行可能来自两个独立的MySQL表。我需要弄清楚数据来自哪个表。对于我的想法,因为table1有三列而table2有五列,我可以计算返回数组中的元素数量,然后我知道。
但MySQL查询需要返回前三个条目,因此我得到一个总是有三个元素的数组,它们也是数组。
我需要计算内部数组中元素的数量。
我该怎么做?
我尝试了以下操作,它不起作用:
$('#search').keyup(function(e) {
$('#results').empty();
if ($(this).val().length > 2) {
$.get('php/search.php', {
input: $(this).val()
}, function(data) {
res = $.parseJSON(data);
//check if returned data is customer row or vehicle row by counting elements
//customer row will have 3, vehicle will have 5
//var x = res[0].length;
for (var i = 0; i < res.length; i++) {
var a = "<h2 class=\"searchcustomer\" id=\"result" + i + "\">" + res[i]['name'] + " " + res[i]['mobile'] + "</h2>";
$('#results').append(a);
//alert('Its customer');
};
});
};
});
从服务器文件返回:
[{
"id": "1",
"cusid": "4",
"make": "Hyundai",
"model": "I10",
"registration": "DL23IK4837"
}, {
"id": "2",
"cusid": "4",
"make": "Maruti",
"model": "Swift",
"registration": "DL87UU8933"
}, {
"id": "3",
"cusid": "6",
"make": "Mitsubishi",
"model": "Lancer",
"registration": "DL22NM4435"
}]
答案 0 :(得分:2)
您在length
上使用object
,始终为undefined
。
您应该使用Object.keys
代替。
var x = Object.keys(res[0]).length; //this is working
上面的代码中有很多语法错误:
$('#search').keyup(function(e) {
$('#results').empty();
if ($(this).val().length > 2) {
$.get('php/search.php',
{
input: $(this).val(), cusid: 0
},
function(data) {
res = $.parseJSON(data);
// check if returned data is table1 or table2 by counting elements
// table1 will have 3, table2 will have 5
var x = Object.keys(res[0]).length; //this is working
// ^^^^^^^^^^^^^^^^^^^^^^^^^^
alert(Object.keys(res[0]).length);
if (x == 3) {
// respective code
}
else if (x == 5) {
// respective code
}
});
}
});
$x
在x
条件if
;
不应用于if else
)
get
醇>