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代码,您也会遇到从复选框中获取值的问题。您正在使用相同的idcoursesToAdd[]
添加到所有复选框。这是无效的,因为页面上的所有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
}
}