2017-02-23 3 views
1

Ich möchte die Elemente eines Arrays von json zurückgegeben zählen. Wenn ich response.length verwende, zählt es alle Zeichen im Array (ich denke schon), während ich es zählen soll, wie viele Elemente es im Array gibt. Die gleiche Methode funktioniert auf anderen Seiten, nur nicht mit dieser..Length zählt Zeichen, nicht die Array-Länge

Dies ist der PHP-Code:

  ...$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-Code:

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)} 
}; 

Hier ist ein Bild von dem, was ich bekomme. Ich mag die Anzahl der Elemente erhalten, die in diesem Fall ist 2.

+1

parse diese Antwort auf das Objekt und dann die Zählung davon. –

+1

Haben Sie versucht, den JSON zu analysieren, um ein tatsächliches Array zu erhalten? Oder geben Sie "json" als Datentyp an, wenn Sie '$ .post()' aufrufen, und jQuery analysiert es für Sie. – nnnnnn

+1

'JSON.parse (Antwort)', oder sagen Sie jQuery, dass Sie eine JSON-Antwort erwarten. – Svenskunganka

Antwort

3

Was immer Sie von PHP zurücksenden, ist immer ein String.
jQuery wird jedoch die Zeichenfolge für Sie automatisch analysieren, wenn Sie entweder die richtigen Header senden oder sagen, dass es JSON ist in den Einstellungen

$.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 

Und die Konsole für das Debuggen von

2

Sie müssen die Antwort var response = JSON.parse(response) analysieren und dann response.length das gewünschte Ergebnis zurück.

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)} 
}; 
+0

@adeneo vielen dank. Es war ein Tippfehler. korrigiert es –

1

Sie Scheint versuchen, die Länge der Zeichenfolge zu finden. Versuchen Sie stattdessen, alert(typeof response), wenn es Zeichenfolge gibt, dann bevor Sie etwas zu JSON mit JSON.parse(response) analysieren und dann versuchen.

0

JSON.parse(response) Das hat den Trick gemacht. Danke für alle Antworten!

0

Sie sollten diese Seite PHP-Abfrage

header('Content-Type: application/json');

in Ihrer Seite ein.

Verwandte Themen