2017-02-03 30 views
0

所以我有一个PHP页面可以加载两种方式。它可以使用includes()或使用AJAX根据用户需求加载第一页的另一个页面直接嵌入到页面中。我的问题来自以下几行代码:通过Ajax加载后在html块中调用javascript

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在加载后运行该脚本标记的内容?

+1

你应该在ajax的'success'部分做些什么。如果你只是回应,你会得到的命令作为一个字符串,你可以评估,如果有必要,否则,检索数据回来作为一个JSON会更聪明。 –

回答

0

把js脚本阿贾克斯完成功能

$.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["counselledCount"] 这里您的Ajax请求访问其页面上的是另外一个例子:

$.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>"; 
+0

ajax无法访问PHP变量。 – Zaper127

+0

Ajax加载代码。原始AJAX加载时,变量不存在。我需要在Ajax运行后得到它。 – Zaper127

+0

您是否将ajax请求发送至php文件。如果是这样,只需将它们放入会话中,然后在代码中抓住b来处理ajax请求 –

0

所以答案是的eval()

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

通过添加一个ID为脚本标签,我可以拉脚本到回调函数,然后使用eval()来执行它谢谢A. lau为我指出了正确的道路。

相关问题