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

时间:2011-03-23 22:21:03

标签: php json codeigniter jquery

我正在使用JQuery.ajax将json字符串发送到php页面,我试图拉动数组并通过变量进行调解。出于某种原因,我可以在运行脚本时看到firebug中的POST但是当我尝试获取所有参数时,我得到的是一个空的Array()。我一直试图弄清楚这几个小时,我的智慧结束了。我从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。 first.ajax()调用将序列化的表单数据发送到我的AJAX控制器并推入db。来自控制器的返回发回一个我转换为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对象,每个循环拉出键,以及无数其他东西。没有...我得到一个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"}]

1 个答案:

答案 0 :(得分:0)

在php中输出任何内容之前,请确保发送正确的内容类型。像JQuery和mootools这样的框架倾向于使用Accept charsets过滤(因为它们应该)(你可以在firebug中看到)

  

header(“Content-Type:application / json”);   //也可以是text / json,根据你的框架检查firebug中的accept头

:)