在codeigniter中读取json对象

时间:2013-05-28 17:57:58

标签: ajax json forms codeigniter

我试图使用控制器函数来读取ajax发送的JSON对象,但是我无法读取php中的JSON。

这是jquery脚本。我试过设置

 $(document).on('ready', function(){
        $('#contact-form').on('submit', function () {

            var form = $(this),
                url = "<?php echo site_url('home_controller/processContactForm'); ?>",
                method = form.attr('method'),
                data = {},

            form.find('[name]').each(function(index,name){
                var input = $(this),
                    name = input.attr('name'),
                    value = input.val();

                    data[name] = value; // Looping through each input inside the form and adding the values to the data Object
                )};

                $.ajax({
                    url: url,
                    type: method,
                    data: data,
                    success:function(response){
                        console.log(data);
                    }
                });

            return false;
        });
    });

这是控制器功能:

public function processContactForm()
{
    $data = json_decode($_POST['data']);
    echo '<pre>';
    print_r($data);
    echo '</pre>';
    var_dump($data);
}

Var转储正在打印 null

2 个答案:

答案 0 :(得分:0)

public function processContactForm()
{
    if(isset($_POST['data'] && $_POST['data'] != NULL) {
        $data = json_decode($_POST['data']);
        echo '<pre>';
        print_r($data);
        echo '</pre>';
        var_dump($data);
    }
}

答案 1 :(得分:0)

将您的ajax功能更改为:

$.ajax({
    url: url,
    type: method,
    data: { data: data }, // create an object with a property of "data"
    success:function(response){
        console.log(data);
    }
});

data设置对象中的ajax属性会将数据数组/对象的键(属性名称)转换为$_POST个键。