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

时间:2014-11-13 13:58:45

标签: javascript php jquery ajax innerhtml

我有一个'查询构建器'页面(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搜索无济于事。任何帮助都会非常感激!

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为如果没有这么多语法错误,你的代码可以正常工作。它是document.getElementById,而不是document.getElementbyId。除此之外,您还应该使用;

结束变量声明

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

我强烈建议您使用外部JavaScript文件。内联JS很糟糕。