2016-07-09 23 views
0

Ich habe ein Javascript, das ein Array über AJAX an ein serverseitiges PHP-Skript sendet.Ich kann ein Array nicht über AJAX senden

ich einen entsprechenden Code-Schnipsel meines Javascript AJAX Funktion unten bin Befestigung:

$.ajax({ 
    url: "bar2.php", 
     type: "POST", 
     data:{data:x}, 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     error: function(xhr, status, error) { 
      console.log(status);console.log(error); 
    }, 
     success:function(data){ 
//do stuff 
} 
} 
    ); 

x ist mein Array, das ich sende.

ich auf dieses Array in meinem PHP-Skript wie folgt:

$data = $_REQUEST['data']; 
    $len = $data.length; 

    $x=format_array($data); 
    function format_array($data){ 
     return "'" . implode("', '", $data) . "'"; 
    } 
    $myquery = " 
    select state,count(device_id) as c_num from base_data where state    

    IN($x)group by state order by c_num DESC limit 10; 
     "; 
     $query = mysql_query($myquery); 

Aber wenn ich es laufen lasse, bekomme ich die Fehlermeldung: Warning: implode(): Ungültige Argumente in **** auf der Leitung übergeben 16

Bitte helfen. Ich habe eine Stunde damit verbracht und bin nicht in der Lage, es herauszufinden. Sendet ich die Daten korrekt?

Alle Hinweise würden geschätzt.

Antwort

2

Sie benötigen Array JSON konvertieren dann zu PHP (Server-Seite) senden:

$.ajax({ 
    url: "bar2.php", 
     type: "POST", 
     data: {data: JSON.stringify(x)}, 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     error: function(xhr, status, error) { 
      console.log(status);console.log(error); 
     }, 
     success:function(data){ 
      //do stuff 
     } 
}); 

PHP:

$data = json_decode($_REQUEST['data']); 
$len = count($data); 
//..... 
//..... 
+0

dies ist nicht notwendig, sollte kein Problem erhalten Formular endoded Daten als Array erhalten – charlietfl

+0

Sie haben Recht! –

2

contentType: "application/json; charset=utf-8", entfernen, und Sie werden als Array von Form erhalten codierte Daten (application/x-www-form-urlencoded), das ist $.ajax default

Verwenden Sie auch count() anstelle von length in php

Verwandte Themen