Php 无法访问使用JQUERY AJAX传递的JSON对象

Php 无法访问使用JQUERY AJAX传递的JSON对象,php,json,codeigniter,jquery,Php,Json,Codeigniter,Jquery,我使用JQuery.ajax将一个json字符串发送到一个php页面,在该页面中,我试图提取数组并通过变量进行调解。出于某种原因,当我运行脚本时,我可以在firebug中看到帖子,但当我尝试获取参数时,我得到的只是一个空数组()。几个小时来我一直在想这个问题,现在我已经不知所措了。我正在从asp.net迁移到.php,所以我对语法还是有点新鲜,但这看起来应该相当简单 这是我的jquery发送代码 $('#form_add').submit(function() { var serial_

我使用JQuery.ajax将一个json字符串发送到一个php页面,在该页面中,我试图提取数组并通过变量进行调解。出于某种原因,当我运行脚本时,我可以在firebug中看到帖子,但当我尝试获取参数时,我得到的只是一个空数组()。几个小时来我一直在想这个问题,现在我已经不知所措了。我正在从asp.net迁移到.php,所以我对语法还是有点新鲜,但这看起来应该相当简单

这是我的jquery发送代码

$('#form_add').submit(function() {
    var serial_data = $(this).serialize();
    $(".page_content").fadeOut("slow", function(){
        $.get(uri_base +'/'+uri_cont+'/get_db_name/true/'+Math.random(), function(data) { 
            $.ajax({
                type: 'POST',
                url: uri_base +'/AJAX/add_record/'+data+'/'+Math.random(),
                data: serial_data,
                contentType: "application/json",
                success: function(data){
                    $.ajax({
                        type: 'POST',
                        url: uri_base +"/"+ uri_cont +"/"+ uri_func,
                        data: data,
                        success: function(data){
                            alert(data)


                        },
                        error: function(xhr, ajaxOptions, thrownError){
                             alert(xhr.status);
                             alert(thrownError);
                        }

                    });  

                },
                error: function(xhr, ajaxOptions, thrownError){
                     alert(xhr.status);
                     alert(thrownError);
                }

            });

        });                       
    });
    return false;
});
忽略第一个.get(),它只是回调一个变量以完成下一个URL。第一个.ajax()调用将序列化的表单数据发送到我的ajax控制器并推入数据库。控制器的返回返回返回一个我转换为json的对象数组

if(isset($key)){    
    $data['add_msg'] = $this->model_ajax->add_record($table,$array);
    $exploded_data = json_encode($data['add_msg']);
    print_r($exploded_data);
    exit;
}
从这里开始,下一个.ajax()应该将数据发送到我的控制器,以拉回一个视图以显示在.pag_content div中。我尝试了回显json对象、一个for-each循环以拉出键,以及许多其他事情。没有什么我要么得到一个JSON无效错误(当试图解码它时),只有“Array()”输出,要么在循环时什么都没有

这是我在firebug中看到的控制器代码和POST输出

echo $_POST;

$array = $_POST;
echo $array;

foreach($_POST as $key){
    echo $key;
}
exit;

[{"id":"29","datetime":"2011-03-23 12:10:25","full_name":"Leroy Brown","email_address":"test@testing.com","password":"asdf","id_group":"0","id_sites":"0","active":"0"}]
在用php输出任何内容之前,请确保发送了正确的内容类型。像JQuery和mootools这样的框架倾向于使用Accept字符集进行过滤(正如它们应该做的那样)(您可以在firebug中看到这一点)

标题(“内容类型:application/json”); //也可以是text/json,根据您的框架检查firebug中的accept头


:)

我的请求头当前设置为application/json,但我也尝试了不同的类型。只是想方设法让它着火。:)我的响应标题设置为text/html。我假设ajax()函数中的Content/Type参数用于返回数据,而不是发送数据,这是正确的吗?好的,是的,这就是全部要点。请求本身(即响应)没有内容类型。设置上面引用的内容类型(在PHP中是!!!)并尝试一下:)结果发现我的问题是因为代码上方的某个地方出现了一个不合适的“return true”。我不知道为什么我会把它放在那里,但一旦我把它拿出来,它就完美地工作了。谢谢你的帮助!!!