Codeigniter AJAX通过POST将数组传递到另一个页面

时间:2018-02-20 14:06:35

标签: javascript php ajax codeigniter

是否可以通过AJAX POST将通过复选框填充的数组传递到另一个页面并导航到该页面?

目前的情况是我有一个带复选框的表格,允许用户选中复选框来支付多个项目。问题是将多个ID传递到付款页面。有什么建议可以做到吗?

这是我到目前为止所做的:

function pay(input){
    var id = input;
    $.ajax({
        method: "POST",
        url: "<?php echo site_url($this->data['controller'].'/Pay'); ?>",
        data:'id='+id,
        beforeSend: function () {
            $('.loading').show();
        },
        success: function(data){
            //what do i fill here
        }
    });
}

或者是否有其他方法可以做到这一点?

3 个答案:

答案 0 :(得分:1)

我将这个问题分解为两个问题:

  

是否可以传递通过复选框填充的数组   另一页?

为什么在输入名称中使用方括号使其成为数组。

<input type="checkbox" name="id[]" value="2">
<input type="checkbox" name="id[]" value="6">

在PHP中,您可以访问所选的项ID,如下所示:

$selectedItemIDs = $_POST['id'];
// $selectedItemIDs is now [2, 6] if both checkboxes were selected.
  

我可以通过AJAX POST将数组传递到另一个页面并导航到该页面   网页?

IIRC如果不使用肮脏的解决方法,这是不可能的。 JavaScript和jQuery不提供此功能 要找到解决方法,您必须意识到您要执行的操作只是使用POST参数导航到其他页面 唐的表格完全是这样吗? 是的,他们这样做了!

我正在谈论的肮脏的解决方法当然是一个隐藏的形式,你用JS / jQuery填充所有需要的信息并提交它。 Here是关于此

的stackOverflow帖子

在您的情况下,我只会使用您已有的表单(带有多个复选框),因为您可以轻松地使用表单传递一组复选框值。

答案 1 :(得分:0)

发出POST请求时,data参数不是字符串。将所有表单数据保存到变量中,并将该变量分配给&#34;数据&#34; POST调用的元素。你可以这样做:

var myform = $('form').serialize(); // This will save all the form's data to the variable myform

然后

data: myform, // This will send what myform contains via POST

内部&#34;成功&#34;你可以从POST响应中解析信息。 之后,您可以使用以下方式重定向:

window.location.href = 'http://yourlink.here'; //this will redirect you to another page

答案 2 :(得分:0)

通过数组,您可以将其发布到ajax

var check_box_array = [];

$("input:checkbox[name=type]:checked").each(function(){
    check_box_array.push($(this).val());
});

然后

 $.ajax({
        method: "POST",
        url: "<?php echo site_url($this->data['controller'].'/Pay'); ?>",
        data:{check_box_data:check_box_array},
        beforeSend: function () {
            $('.loading').show();
        },
        success: function(data){
            //what do i fill here
        }
    });