在弹出窗口中获取从表单发送的数据


Get data sent from form in popup

我需要在弹出窗口中获取从表单发送的数据,但问题是表单中有许多同名的复选框,例如name='list[]'

.JS:

function showPopup(){
    var user = document.getElementById("check").value;
    var popup = window.open("milestone.php?a="+user,"hhhhhh","width=440,height=300,top=100,left=‌​300,location=1,status=1,scrollbars=1,resizable=1") ;
} 

.html:

<input type='checkbox' name="approve[]" value="get from Mysql">
<input type='checkbox' name="approve[]" value="get from Mysql"> 
<input type='checkbox' name="approve[]" value="get from Mysql">
var user = document.getElementById("check").value;

这是行不通的,因为:

  • 您需要获取多个值
  • 您只需要获取已选中的复选框的值
  • 您没有具有该 id 的元素(但无论如何 id 必须是唯一的)

所有字段都具有相同的名称。使用名称。

var inputs = document.getElementsByName("approve[]")

然后,您需要从中生成表单数据,过滤掉未选中的数据:

var form_data = [];
for (var i = 0; i < inputs.length; i++) {
    var input = inputs[i];
    if (input.checked) {
        form_data.push(encodeURIComponent(input.name) + "=" + encodeURIComponent(input.value));
    }
}

然后将所有表单数据放在一起:

var form_data_query_string = form_data.join("&");

然后将其放入您的网址中:

var url = "milestone.php" + "?" + form_data_query_string;

然后打开新窗口:

var popup = window.open(url,"hhhhhh","width=440,height=300,top=100,left=‌​300,location=1,status=1,scrollbars=1,resizable=1") ;
如果你想

通过get传递数组,你应该遍历所有选中的复选框,并将每个人的值存储在数组中,然后使用JSON.stringify将它们转换为Json,这样你就可以在url中传递它们:

function showPopup(){
    var approve_array=[];
    var checked_checkboxes = document.querySelectorAll('input[type="checkbox"]:checked');
    for(var i=0;i<all_checkboxes.length;i++){
        approve_array[i] = checked_checkboxes[i].value;
    }
    var url = "milestone.php?approve="+JSON.stringify(approve_array);
    var popup = window.open(url,"hhhhhh","width=440,height=300,top=100,left=‌​300,location=1,status=1,scrollbars=1,resizable=1") ;
}

在你的 php 页面中,您可以使用 json_decode 将数组作为 Json 传递:

$array_of_approves = json_decode($_GET['approve']);

希望这有帮助。

您可以按以下方式访问该值:

    $approveList= $_POST['approve'];

并且可以迭代为

    foreach ($approveList as $approve){
     echo $approve."<br />";
           }