【问题标题】:How can store javascript variable to php session variables?如何将 javascript 变量存储到 php 会话变量中?
【发布时间】:2013-08-06 06:57:14
【问题描述】:

我无法将 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++;
});

我必须将它传递给我的控制器,这样我才能将值保存到我的数据库中......有什么帮助吗?我正在考虑将此数组存储为会话变量,但考虑到客户端和服务器端问题,我不知道如何。

【问题讨论】:

  • 只需通过 ajax 发送即可。

标签: php javascript codeigniter


【解决方案1】:

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

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

【讨论】:

    【解决方案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>
    

    数组编辑

    对于 Array ajax 调用,我会使用 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']);
    }
    

    【讨论】:

    • 先生@Mr.Web,假设我正在传递一个数组“tablefield”,我怎样才能在我的控制器中获取值?
    • 打印工作,但是当我尝试将值存储到变量时,它失败了......
    • @Umpong_1947676 这样对我来说很好:$my_arr = $_POST['array_send']; echo $my_arr[2];确切的问题是什么? `
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2013-09-01
    • 2013-10-11
    • 1970-01-01
    • 2010-12-06
    相关资源
    最近更新 更多