2

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

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

4

2 回答 2

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. 要处理此问题,请参阅这篇文章:处理 CODEIGNITER SESSION/AJAX 问题

编辑:

对于base_url()JS 我在 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']);
}
于 2013-08-05T14:25:25.603 回答
1

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

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