Javascript 在innerHTML中执行脚本标记以执行Ajax调用

Javascript 在innerHTML中执行脚本标记以执行Ajax调用,javascript,php,jquery,ajax,innerhtml,Javascript,Php,Jquery,Ajax,Innerhtml,我有一个“查询生成器”页面(querybuilder.php),允许用户构建一个SQL查询,然后执行它。所有这些都很好 查询的参数被发布到另一个PHP页面(queryresults.PHP),该页面运行一个存储的过程,然后循环遍历结果以创建一个插入querybuilder.PHP的表。循环在每行上都包含一个复选框,其值设置为输出的每条记录的ID php(innerHTML页面)也有一些下拉列表,允许用户对已“检查”的行执行某些操作。我在Javascript之外做了一个循环,以便对每个连续的复选框

我有一个“查询生成器”页面(querybuilder.php),允许用户构建一个SQL查询,然后执行它。所有这些都很好

查询的参数被发布到另一个PHP页面(queryresults.PHP),该页面运行一个存储的过程,然后循环遍历结果以创建一个插入querybuilder.PHP的表。循环在每行上都包含一个复选框,其值设置为输出的每条记录的ID

php(innerHTML页面)也有一些下拉列表,允许用户对已“检查”的行执行某些操作。我在Javascript之外做了一个循环,以便对每个连续的复选框执行一次

据我所知,我无法在innerHTML页面中使用脚本标记,但我需要与仅在innerHTML加载时创建并指定值的复选框进行交互

我已经研究了一些变通方法,包括以下几点:但似乎都不管用

$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>";
}
$checkbox=isset($\u POST['checkbox'])$_POST['checkbox']:数组();
foreach(复选框为$value){
回声“
$('doAction')。在('click',function()上{
变量id=“.$value.”;
var u=document.getElementById('user')。值;
$.ajax({
类型:\“POST\”,
url:“storedprocs.php\”,
数据:{id:id,u:user}
})
.done(函数(msg){
document.getElementById('done')。innerHTML=msg;
});
});
";
}
来自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>';
echo”
用户1
用户2
用户3
提交
';
echo$tableheaders;
回声';
foreach($结果为$行){
回声'
';

对于($x=1;$x我认为如果代码没有那么多语法错误,它可以工作

这一切都取决于最终呈现的页面,我们不知道最终的php输出是什么


我强烈建议您使用外部JavaScript文件。内联JS不好。

您能发布您希望完成的html是什么样子吗?您只需要1块JavaScript来处理所有元素的事件,而不是每个元素1块。另外,不要忘记元素ID必须是唯一的。jQuery只知道p中的元素运行时已过期,因此添加到DOM中的新元素无法被jQuery识别。为了防止这种情况,可以将事件从新添加的项冒泡到DOM中的某个点,而jQuery在页面加载时就是在该点上运行的。许多人使用
document
作为捕获冒泡事件的位置,但不必在DOM中占据那么高的位置树。理想情况下是Archer-我现在已经编辑了包含完成的html。你说我只需要一块javascript是什么意思?Jay-谢谢,现在阅读,看起来非常有用!谢谢,document.getElementbyId是文章中的一个输入错误。我的实际代码有正确的大写字母-我不能复制粘贴。我现在结束了变量声明但我认为这不是问题所在。