我有一个'查询构建器'页面(querybuilder.php),它允许用户构建SQL查询然后执行它。所有这一切都很好。
查询的参数被POST到另一个运行存储过程的PHP页面(queryresults.php),然后遍历结果以创建一个插入querybuilder.php的表。循环包括每行的复选框,其值设置为要输出的每个记录的ID。
Queryresults.php(innerHTML页面)也有一些下拉菜单,允许用户对已经“检查”的行执行某些操作。我在Javascript之外做了一个循环,为每个连续的复选框执行一次。
据我了解 - 我在innerHTML页面中没有脚本标签,但是当innerHTML加载时,我需要与仅创建的复选框进行交互,并为其分配值。
我查看了一些解决方法,包括以下内容:http://24ways.org/2005/have-your-dom-and-script-it-too但似乎都没有。
$checkboxes = isset($_POST['checkbox']) ? $_POST['checkbox'] : array();
foreach($checkboxes as $value) {
echo "
<script>
$('#doAction').on('click', function() {
var id = ".$value.";
var u = document.getElementById('user').value;
$.ajax({
type: \"POST\",
url: \"storedprocs.php\",
data: { id: id, u: user }
})
.done(function(msg) {
document.getElementById('done').innerHTML=msg;
});
});
</script>";
}
来自innerHTML页面的最终HTML如下所示:
echo "
<div class="row">
<div class="col-md-6">
<select id="user" class="input-sm">
<option value="1">User 1</option>
<option value="2">User 2</option>
<option value="3">User 3</option>
</select>
</div>
<div class="col-md-3">
<button class="btn" id="doAction" data-stmt="false">Submit</button>
</div>
</div>
<div class="row">
<div class="leTable">
<table class="table-hover table-responsive">
<tr class="heading">';
echo $tableheaders;
echo '</tr>';
foreach($result as $row) {
echo '<tr>
<td><input type="checkbox" name="chkbox" id="idChkBox"><a href="otherpage.php?id='.$row[0].'" value="'.$row[0].'">'.$row[0].'</a></td>';
for ($x=1; $x<sizeof($row); $x++) {
echo '<td>'.$row[$x].'</td>';
}
echo '</tr>';
}
echo '</table>';
echo '</div></div>';
为了解决问题,第二个变量来自id = user的元素是由另一个完全独立的innerHTML设置的,所以我不知道如何引用它。
真正令人头疼的是,我已经广泛搜索并通过StackExchange搜索无济于事。任何帮助都会非常感激!
谢谢!
答案 0 :(得分:0)
我认为如果没有这么多语法错误,你的代码可以正常工作。它是document.getElementById,而不是document.getElementbyId。除此之外,您还应该使用;
结束变量声明这一切都取决于最终呈现的页面。我们不知道最终的PHP输出是什么。
我强烈建议您使用外部JavaScript文件。内联JS很糟糕。