Ajax和php - 将javascript数组发送到php

时间:2012-03-25 08:02:16

标签: php ajax

我尝试将数据发送到我的PHP脚本,但我想我想念一些。

首先,

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


    }

上面的代码是我的js文件。我在var artistIds中有artistIds。我的目标是将此数组发送到我的php脚本。为此,我将其设为json,我的意思是使用JSON.stringify对其进行编码

然后在php方面,我使用下面的代码。但是,$ array始终为null。可能是什么原因?

public function deleteDataAjax2() {

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

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

    }

1 个答案:

答案 0 :(得分:4)

您将数据作为JSON的原始字符串传递,但您的PHP正在尝试通过将数据解析为application/x-www-form-urlencoded然后查看artistIds密钥来查找该字符串。

假设数组是平的:忘记JSON。你不需要它。

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

$array = $_POST['artistIds'];

如果阵列不平坦,那么:

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

并且(添加了适当的错误检查):

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