如何将javascript变量存储到php会话变量?

时间:2013-08-05 14:11:42

标签: php javascript codeigniter

我无法将javascript数组和其他变量传递给我的php控制器。我在codeigniter中这样做。我在javascript上分配了一些值:

var count = ($('#listOfProducts tr').length);
//loop start
var i=0;
grid=$('#listOfProducts input[type="checkbox"]:checked').each(function(){
    var $row = $(this).parents('tr'); 
    var $trid =$(this).closest('tr').attr('id');
    rowid[i]=$trid; 
        rowfields.push({itemname: $row.find('td:eq(0)').text(), productname:$row.find('td:eq(1)').text(), productdesc: $row.find('td:eq(2)').text(), unitprice:$row.find('td:eq(3)').text(), quantity:$row.find('td:eq(5) input').val(), amount:$row.find('td:eq(6) input').val()});
    i++;
});

我必须将它传递给我的控制器,以便我可以将值保存到我的数据库...任何帮助?我正在考虑将此数组存储为会话变量,但我不知道如何考虑客户端和服务器端问题。

2 个答案:

答案 0 :(得分:2)

我使用CI,我找到的最好的方法是通过AJAX发送它,就像这样:

$('.your-element').click(function(e){
    var id = 1;
    $.ajax({
        url: base_url()+'yourController/youFunction/'+id,
        type: 'get',
        dataType: 'html',
        success: function(html) {
            //YOUR ACTION
        }
    });

});

如果您需要更多规格,请告诉我们。 NOTE: This method creates problems if you have sessions data going on as every ajax call changes the session id or doubles the time of the session_update。 要处理此问题,请参阅此帖:HANDLING CODEIGNITER SESSION/AJAX PROBLEMS

修改:

对于JS中的base_url(),我在index.php文件中写了这个:

<script>
function base_url(){
  var url  = '<?= base_url() ?>';
  return url;
}
</script>

数组修改

对于一个数组ajax-call我是用jQuery $.post()来做的,就像这样:

$('.your-element').click(function(e){
    e.preventDefault();
    var demoArray = ['1', '3', '7'];
    $.post(base_url()+'admin/test/', {array_send:demoArray}, function(result){
        alert(result);
    });
});

控制器admin/test位于:

public function test(){
    print_r($_POST['array_send']);
}

答案 1 :(得分:1)

实际上只有几个选项可以将信息从javascript(或浏览器)传递给php:

  1. 使用Ajax请求。这可以是GET或POST请求(分别位于$_GET$_POST数组中的php中的变量
  2. 使用表单:将要发送的数据添加到oldschool html表单并发布。
  3. 通过魔法:将牙刷放在头上,转过7次,然后嘟mur一些不存在的词语。这可能有所帮助。