Javascript 使用php从ajax检索发布的数据

Javascript 使用php从ajax检索发布的数据,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我在从ajax调用中检索发布的数据时遇到问题,不确定出了什么问题。下面脚本的控制台输出显示了ajax调用之前预期的所有内容,但是连接器中没有数据 function updateOptions(data){ console.log(data); console.log(data.id); console.log(data.action); var data = {id: data.id, action : data.acti

我在从ajax调用中检索发布的数据时遇到问题,不确定出了什么问题。下面脚本的控制台输出显示了ajax调用之前预期的所有内容,但是连接器中没有数据

   function updateOptions(data){

        console.log(data);
        console.log(data.id);
        console.log(data.action);

        var data = {id: data.id, action : data.action};

        console.log(data);

        $.ajax({

            type: 'POST',
            url: 'ajax.connector.php?action=updateOptions',
            data: JSON.stringify(data),
            cache: false,
            dataType  : "json",

            success: function(data, status) {

                if(data.status == 'success'){

                console.log('success');
                console.log(data);

                }else if(data.status == 'error'){
                    console.log('selects not updated');
                }

            },

            error: function(data){
                console.log('an error has occurred');
            },

        });

    }
因此,前4个console.log条目正确显示数据,成功条件下的第一个console.log正确显示数据。第二,显示:

Object {status: "success", msg: "Category added successfully", id: null, action: null, post: Array[0]}
连接器[更像一个导演]

   case 'updateOptions':
        error_log('Running updateOptions function ' . print_r($_POST, TRUE), 0);
        $output = $sbb->updateOptions($_POST);
        break;
记录以下内容:

Running updateOptions function Array\n(\n)\n,
如果我尝试在日志中回显$\u POST['action']或$\u POST['data']或其他内容,我会得到一个未定义的索引

我强制ajax调用在php case函数调用的类中返回success:

public function updateOptions($data){

        $output = array(
            'status' => 'success',
            'msg' => 'Category added successfully',
            'id' => $data['id'],
            'action' => $data['action'],
            'post' => $data,
        );

        return $output;

}
所以ajax调用本身是有效的,没有传递的是数据

不知何故,我没有从ajax帖子中获取(或正确检索)数据


这里的问题是什么?

您发布的是JSON,$\u POST使用key=value对填充,不要将JSON与
应用程序/x-www-form-urlencoded
多部分/表单数据
(这是php用来填充
$\u POST
的内容
要使用jQuery.ajax发送
application/x-www-form-urlencoded
数据,请传递一个对象,并将该数据作为数据参数

data: data, // removed JSON.stringify

您发布的是JSON,$\u POST由key=value对填充,不要将JSON与
application/x-www-form-urlencoded
multipart/form data
(这是php用来填充
$\u POST

要使用jQuery.ajax发送
application/x-www-form-urlencoded
数据,请传递一个对象,并将该数据作为数据参数

data: data, // removed JSON.stringify

您发布的是JSON,$\u POST由key=value对填充,不要将JSON与
application/x-www-form-urlencoded
multipart/form data
(这是php用来填充
$\u POST

要使用jQuery.ajax发送
application/x-www-form-urlencoded
数据,请传递一个对象,并将该数据作为数据参数

data: data, // removed JSON.stringify

您发布的是JSON,$\u POST由key=value对填充,不要将JSON与
application/x-www-form-urlencoded
multipart/form data
(这是php用来填充
$\u POST

要使用jQuery.ajax发送
application/x-www-form-urlencoded
数据,请传递一个对象,并将该数据作为数据参数

data: data, // removed JSON.stringify


抱歉,可能有点误导。我更新了这个问题。没有传递的是数据,实际上我正在强制将一个成功条件返回到ajax调用。你能做一个
var\u dump($\u POST)
。PHP会自动解码JSON吗?编辑:不,正如穆萨指出的那样。@slicedtoad,这基本上就是错误日志('Running updateOptions function'.print\r($\u POST,TRUE),0);line正在做,将~应该是~的POST数据数组输出到apache日志中。没有数据,只是一个空数组!是的,但dump提供了更多信息。但问题是,您发布的是JSON字符串,php并没有像Musa的回答所说的那样期望。对不起,可能有点误导。我更新了问题。是数据没有传递,我是一个实际上,强制将成功条件返回到ajax调用。您可以执行
var\u dump($\u POST)
吗?PHP是否自动解码JSON?编辑:不,正如穆萨指出的那样。@slicedtoad,这基本上就是错误日志('Running updateOptions function')。print\r($\u POST,TRUE),0);line正在做,将~应该是~的POST数据数组输出到apache日志中。没有数据,只是一个空数组!是的,但dump提供了更多信息。但问题是,您发布的是JSON字符串,php并没有像Musa的回答所说的那样期望。对不起,可能有点误导。我更新了问题。是数据没有传递,我是一个实际上,强制将成功条件返回到ajax调用。您可以执行
var\u dump($\u POST)
吗?PHP是否自动解码JSON?编辑:不,正如穆萨指出的那样。@slicedtoad,这基本上就是错误日志('Running updateOptions function')。print\r($\u POST,TRUE),0);line正在做,将~应该是~的POST数据数组输出到apache日志中。没有数据,只是一个空数组!是的,但dump提供了更多信息。但问题是,您发布的是JSON字符串,php并没有像Musa的回答所说的那样期望。对不起,可能有点误导。我更新了问题。是数据没有传递,我是一个实际上,强制将成功条件返回到ajax调用。您可以执行
var\u dump($\u POST)
吗?PHP是否自动解码JSON?编辑:不,正如穆萨指出的那样。@slicedtoad,这基本上就是错误日志('Running updateOptions function')。print\r($\u POST,TRUE),0);line正在做,将~应该~的POST数据数组输出到apache日志中。没有数据,只是一个空数组!是的,但dump提供了更多信息。但问题是,您正在发布一个JSON字符串,php不希望像Musa的回答所说的那样。啊哈,这让生活变得更轻松-实际上,我可以不使用var data={id:data.id,action:data.action}&直接传递数据。谢谢!啊,这让生活更轻松了-实际上我可以不使用var data={id:data.id,action:data.action};&直接传递数据。谢谢!啊,这让生活更轻松了-实际上我可以不使用var data={id:data.id,action:data.action}&直接传递数据即可。谢谢!啊,这让生活更轻松了-实际上我可以不用var data={id:data.id,action:data.action};&直接传递数据即可。谢谢!