我无法将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++;
});
我必须将它传递给我的控制器,以便我可以将值保存到我的数据库...任何帮助?我正在考虑将此数组存储为会话变量,但我不知道如何考虑客户端和服务器端问题。
答案 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:
$_GET
或$_POST
数组中的php中的变量