Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将复选框数组传递给javascript_Php_Javascript_Ajax - Fatal编程技术网

Php 将复选框数组传递给javascript

Php 将复选框数组传递给javascript,php,javascript,ajax,Php,Javascript,Ajax,我有一些复选框值,作为 $sql = "sql statement"; $courseResult = mysqli_query($connection, $sql); $courses = mysqli_fetch_row($ // Display the courses the user has taken while ($courses) { echo "<td><input type='checkbox' name='coursesToAdd[]' id='c

我有一些复选框值,作为

$sql = "sql statement";
$courseResult = mysqli_query($connection, $sql);
$courses = mysqli_fetch_row($
// Display the courses the user has taken 
while ($courses) {
    echo "<td><input type='checkbox' name='coursesToAdd[]' id='coursesToAdd[]' value='$courses[0]'>$courses[0]</td></tr>";            
    $courses = mysqli_fetch_row($courseResult);
}

<input type='button' onclick='EditStudentCertificates()' value='Submit'/>
我认为问题在于我试图从javascript中的复选框中获取值的方式,可能存在以下问题:

            var coursesToAddField = document.getElementById("coursesToAdd[]");
            var coursesToAdd = coursesToAddField ? coursesToAddField.value : '';

因为变量coursesToAdd除了页面上第一个复选框的值之外似乎什么都没有,无论我在点击submit之前在页面上选中了多少个复选框

您是异步进行的。因此,您应该使用onreadystatechange事件

尝试:


并删除location.reload()

当有多个值要通过POST时,它需要
encodeURIComponent(variablename)
,正如我在上面的评论中提到的:

即使没有查看您发布的AJAX代码,您也会遇到从复选框中获取值的问题。您正在使用相同的id
coursesToAdd[]
添加到所有复选框。这是无效的,因为页面上的所有ID都必须是唯一的。您需要改用类名

在HTML/PHP中:

while ($courses) {
    echo "<td><input type='checkbox' name='coursesToAdd[]' class='coursesToAdd' value='$courses[0]'>$courses[0]</td></tr>";            
}
while($courses){
回显“$courses[0]”;
}
在JS中,您可以访问如下复选框:

var courseCheckboxes = document.getElementsByClassName("coursesToAdd");
for (var i=0; i < courseCheckboxes.length; i++) {
    if (courseCheckboxes[i].checked) {
       // do something with the checkbox
    }
}
var coursecheckbox=document.getElementsByClassName(“coursesToAdd”);
对于(变量i=0;i
在ajax调用完成之前,您正在重新加载页面(胡乱猜测,因为您没有真正告诉我们问题是什么,也没有问任何问题)。看起来您对所有复选框都使用了相同的id。你不能那样做。ID必须是唯一的。您可以对所有名称使用相同的“coursesToAdd[]”,但不能对ID使用。改为使用类,然后在GetElementsByCassName而不是getElementById上循环。问题似乎在于从用户检查的复选框中获取值。我不确定从JavaScription访问此信息的最佳方式是什么这正是我想要的!谢谢
while ($courses) {
    echo "<td><input type='checkbox' name='coursesToAdd[]' class='coursesToAdd' value='$courses[0]'>$courses[0]</td></tr>";            
}
var courseCheckboxes = document.getElementsByClassName("coursesToAdd");
for (var i=0; i < courseCheckboxes.length; i++) {
    if (courseCheckboxes[i].checked) {
       // do something with the checkbox
    }
}