繁体   English   中英

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

[英]call javascript in html block after load by Ajax

因此,我有一个可以以两种方式加载的PHP页面。 可以使用include()直接将其嵌入到页面中,也可以使用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在加载时不会运行javascript。 因为代码只需要PHP脚本知道的动态变量,所以我不能只调用AJAX函数中的函数。 我想知道是否有任何告诉JavaScript在加载后运行该脚本标记的内容?

将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 done,将您的脚本与请求一起发回。

$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>";

所以答案是eval()

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM