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

时间:2016-02-24 10:03:54

标签: javascript php html mysql json

我需要在弹出窗口中获取从表单发送的数据,但表单中存在许多具有相同名称的复选框的问题,例如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">

3 个答案:

答案 0 :(得分:0)

如果你想通过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']);

希望这有帮助。

答案 1 :(得分:0)

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") ;

答案 2 :(得分:-1)

您可以访问以下值:

    $approveList= $_POST['approve'];

可以迭代为

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