簡體   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