如何将JS对象传递给PHP函数

时间:2015-08-29 12:00:35

标签: php jquery object

$('.select_category').change(function(){
        if($(this).is(':checked')){
            var ID = $(this).val();
            $.ajax({
                url:'<?php echo site_url($this->config->item('admin_folder').'/catalog/get_all_option');?>',
                type:'POST',
                data:{category_id:1},
                dataType: 'json',
                success:function(data){

                    $('#attribute_form').html('<?php add_attribute_form("'+data+'");?>');


                }

            });
        }

    });

关于回调函数成功返回数据并将其传递给add_attribute_form(data)php函数但没有任何响应。 将js对象传递给php函数的正确方法是什么

1 个答案:

答案 0 :(得分:2)

你需要做的是,使用Ajax将数据发送到单独的 php页面,传递一些信息,然后,基于该信息,php页面应该返回< / strong>数据到Ajax回调函数,它将返回的数据添加到原始页面。

这是一个简单的例子(and a working demo here)

index.html执行此操作:

<script>
 $(document).ready(function(){

    $('.select_category').change(function(){
        if($(this).is(':checked')){
            var ID = $(this).val();
            $.ajax({
                url:'somepage.php',
                type:'POST',
                data:{category_id:1},
                dataType: 'json', // this setting means you expect the server to return json formatted data
                                  // this is important because if the data you get back is not valid json, 
                                  // the success callback below will not be called, 
                                  // the error callback will be called instead
                success:function(response){
                    $('#attribute_form').html(response.html); 
                    // if not using json, this would just be $('#attribute_form').html(response); 
                },
                error:function(xhr, status, error){
                   // handel error 
                }
            });
        }
    });
});
</script>

<input type="checkbox" class="select_category"> Check this box
<div id="attribute_form"></div>

然后在somepage.php中执行以下操作:

<?php
$category_id = isset($_POST['category_id']) ? $_POST['category_id'] : null;
if($category_id == '1'){
    echo json_encode(array('html'=>'<h1>This text came from the php page</h1>'));
    exit;

    // if you are not using dataType:json in your ajax, you can just do:
    // echo '<h1>This text came from the php page</h1>';
    // exit;
}
?>