.length计算字符数,而不是数组长度

时间:2017-02-23 06:24:00

标签: javascript php arrays

我想计算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)}
};

这是我得到的照片。我想得到物品的数量,在这种情况下是2。

6 个答案:

答案 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查询。