我想计算json返回的数组的项目。当我使用response.length
时,它会计算数组中的所有字符(我猜是这样),而我想要它做的是计算数组中有多少项。相同的方法适用于其他页面,只是没有这个。
这是php代码:
...$response[] = array("id" => $row['appid'],
"hour" => $row['hour'],
"tname" => $tname,
"tsurname" => $tsurname,
"cname" => $cname,
"csurname" => $csurname,
"cgsm" => $cgsm,
"cemail" => $cemail,
"cdept" => $cdept,
"cdeg" => $cdeg,
"purpose" => $purpose,
"clientnotshown" => $row['clientnotshown']);
};
if(isset($response)){
echo json_encode($response);
} else {
$response = array("val" => 0);
echo json_encode($response);
};
Javascript代码:
function updateTable() {
var getData = {
date: $("#displaydate").val(),
operation:"getData"
}
$.post( "printoperations.php", getData).done(function( response ) {
if (response.val != 0){
alert("so far so good")
var arrayLength = response.length
alert(response)
alert(arrayLength)}
};
答案 0 :(得分:3)
无论你从PHP寄回的是什么,总是一个字符串 然而,如果您发送正确的标头,或者告诉它在设置中是JSON,jQuery将自动为您解析该字符串
$.post("printoperations.php", getData, function(response) {
if (response.val != 0) {
console.log("so far so good")
var arrayLength = response.length
console.log(response)
console.log(arrayLength)
}
}, 'json'); // <- here
使用控制台进行调试
答案 1 :(得分:2)
您需要解析回复var response = JSON.parse(response)
,然后response.length
将返回所需的结果。
答案 2 :(得分:2)
var getData = {
date: $("#displaydate").val(),
operation:"getData"
}
$.post( "printoperations.php", getData).done(function( response ) {
if (response.val != 0){
alert("so far so good")
var responseArray = JSON.parse(response)
alert(responseArray)
alert(responseArray.length)}
};
答案 3 :(得分:1)
似乎你试图找到字符串的长度。相反,尝试$_SESSION
,如果它给出字符串,那么在做任何事情之前用alert(typeof response)
将其解析为JSON,然后尝试。
答案 4 :(得分:0)
JSON.parse(response)
这就是诀窍。谢谢你的所有答案!
答案 5 :(得分:0)
你应该把这个
header('Content-Type: application/json');
在你的服务器端php查询。