2012-03-25 16 views
1

Ich versuche, Daten an meine PHP-Skripte zu senden, aber ich denke, ich vermisse etwas.Ajax und PHP - Senden von Javascript-Array zu PHP

Zunächst einmal

function deleteData2() 
    { 
     var artistIds = new Array(); 

     $(".p16 input:checked").each(function(){ 
      artistIds.push($(this).attr('id')); 
     }); 


     $.post('/json/crewonly/deleteDataAjax2', JSON.stringify({'artistIds': artistIds}),function(response){ 
     if(response=='ok') 
      alert(artistIds); 
    }); 


    } 

Above-Code ist meine js-Datei. Ich habe artistIds in var artistIds. Mein Ziel ist, dieses Array zu meinem PHP-Skript zu senden. Um das zu machen, mache ich es json, ich meine es mit JSON.stringify

dann in php Seite, ich benutze unten Code.Allerdings ist $ Array immer Null . Was könnte der Grund sein?

public function deleteDataAjax2() { 

     $array=json_decode($_POST['artistIds']); 

     if (isset($array)) 
      $this->sendJSONResponse('ok'); 

    } 
+1

Haben Sie versuchte 'print_r ($ _POST)'? Es sollte der erste Schritt in einer solchen Situation sein. – JJJ

+0

es ist leider null –

+0

Sorry, aber ich glaube dir nicht; '$ _POST' ist immer ein Array, auch wenn keine Post-Daten gesendet werden. (Drucken Sie nicht '$ array', sondern die ganze' $ _POST'-Variable.) – JJJ

Antwort

4

Sie passieren die Daten als Ausgang Reihe von JSON, aber Ihre PHP versucht, die Zeichenfolge zu finden, indem die Daten als application/x-www-form-urlencoded Parsen und dann an den artistIds Schlüsseln suchen.

Angenommen, das Array ist flach: Vergessen Sie JSON. Du brauchst es nicht.

$.post('/json/crewonly/deleteDataAjax2', {'artistIds': artistIds},function(response){ 

Und:

Wenn das Array nicht flach ist, dann gilt:

$.post('/json/crewonly/deleteDataAjax2', 
     { json: JSON.stringify({'artistIds': artistIds}) }, 
     function(response){ 

Und (mit geeigneten Fehler hinzugefügt Prüfung):

$json = $_POST['json']; 
$data = json_decode($json); 
$artists = $data['artistIds']; 
+0

Alter, vielen Dank. –