Mert METİN
Mert METİN

Reputation: 1288

Ajax and php - sending javascript array to php

i try to send data to my php scripts but i think i miss something.

First of all,

   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 is my js file. i have artistIds in var artistIds. My goal is sending this array to my php script.In order to that, i make it json , i mean encode it with JSON.stringify

then in php side, i use below code.However, $array is always null. What might be the reason ?

public function deleteDataAjax2() {

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

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

    }

Upvotes: 1

Views: 103

Answers (1)

Quentin
Quentin

Reputation: 943142

You are passing the data as a raw string of JSON, but your PHP is trying to find that string by parsing the data as application/x-www-form-urlencoded and then looking at the artistIds key.

Assuming the array is flat: Forget JSON. You don't need it.

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

And:

$array = $_POST['artistIds'];

If the array isn't flat, then:

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

And (with suitable error checking added):

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

Upvotes: 4

Related Questions