簡體   English   中英

Codeigniter AJAX通過POST將數組傳遞到另一個頁面

[英]Codeigniter AJAX passing array to another page via POST

是否可以通過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
        }
    });
}

還是有其他替代方法?

我將這個問題分解為兩個問題:

是否可以將通過復選框填充的數組傳遞到另一個頁面?

為什么是,在輸入名稱中使用方括號將其制成數組。

<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填寫所有需要的信息並提交。 是關於此的stackOverflow帖子

不過,在您的情況下,我將僅使用您已經擁有的表單(帶有多個復選框),因為您可以輕松地通過表單傳遞一組復選框值。

發出POST請求時,data參數不是字符串。 將所有表單數據保存到一個變量中,然后將該變量分配給POST調用的“ data”元素。 您可以這樣做:

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

在“成功”內部,您可以解析POST響應中的信息。 之后,您可以使用以下方式重定向:

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

通過數組,您可以將其發布到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
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM