在Ajax加载后调用html块中的javascript

时间:2017-02-03 08:43:10

标签: javascript php ajax

所以我有一个可以双向加载的PHP页面。它可以使用includes()直接嵌入到页面中,也可以使用AJAX根据用户需求加载第一页。我的问题来自这些代码:

echo "<script>";
    echo "we_start_slide('" . $we_gallery['gallery_name'] . "', " . $we_gallery['display']->output() . ", " . $we_gallery['settings']['slide_time'] . ");";
    echo "we_slide_show_btns('" . $we_gallery['gallery_name'] . "');";
echo "</script>";

这适用于直接负载。但是,正如您所知,AJAX在加载时不会运行javascripts。因为代码需要只有PHP脚本知道的动态变量,所以我不能只调用AJAX函数中的函数。我想知道是否有任何方法告诉JavaScript在加载后运行该脚本标记的内容?

2 个答案:

答案 0 :(得分:0)

将js脚本放在ajax done函数

$.ajax({

}).done(function() {
  <?php
     echo "<script>";
     echo "we_start_slide('" . $we_gallery['gallery_name'] . "', " . $we_gallery['display']->output() . ", " . $we_gallery['settings']['slide_time'] . ");";
     echo "we_slide_show_btns('" . $we_gallery['gallery_name'] . "');";
     echo "</script>";
  ?>
});

此处的参考是jquery ajax api http://api.jquery.com/jquery.ajax/

有几个选择。注意counselledCount:txt是一个post变量,所以在处理你的ajax请求的页面上用$_POST["counselledCount"]访问它 这是另一个例子:

$.post("../includes/process-results.php", {counselledCount: txt, currentPageReset: "yes"}, function(result){
        showAjaxResult(result);
});

现在不是使用ajax,而是在处理ajax请求的页面上发送该请求,然后将请求发送回脚本。

$request = "<script>";
$request .= "we_start_slide('" . $we_gallery['gallery_name'] . "', " . $we_gallery['display']->output() . ", " . $we_gallery['settings']['slide_time'] . ");";
$request .= "we_slide_show_btns('" . $we_gallery['gallery_name'] . "');";
$request .= "</script>";

答案 1 :(得分:0)

所以答案是eval()

eval(document.getElementById('slide_start').innerHTML);

通过向脚本标记添加id,我可以将脚本拉入回调函数,然后使用eval()执行它感谢A. lau指出我正确的方法。