2016-07-09 59 views
1

我想插入HTML和JavaScript生成的PHP到頁面中的div。Php回聲內容到div

a.php只會文件:

function get_preset() { 
    return (bunch of html, javascript); 
} 

b.php:

<div id="preset_preview"> 
    //<?php echo get_preset(); ?> //this works well, but I need to execute this every time I click a button in jquery. 
</div> 

我可以使用Ajax成功我jQuery和a.php只會之間的溝通,但我如何從返回的內容get_preset函數調用php到preset_preview div?

有沒有辦法做到這一點沒有發送數據與Ajax從get_preset函數調用到jquery,然後使用jquery把它放到preset_preview div?

php可以以某種方式單獨做它每次從jquery請求這樣?

所以使用jQuery AJAX調用PHP執行這樣的:

<div id="preset_preview"> 
    <?php echo get_preset(); ?> 
</div> 

什麼是困惑我的是,PHP可以做到這一點成功(如上面的例子證明),而不先用AJAX將數據發送到jQuery的。

+2

聽起來像您需要了解客戶端和服務器端腳本之間的區別,以回答您所問的任何問題。 – PeeHaa

+0

你可以在b.php文件中包含a.php文件,然後在你的b.php文件中調用'get_preset()',當你需要數據時,你需要調用b.php –

+0

請嘗試解釋你真正想做什麼隨着這個代碼。就像例如JS和HTML一樣。這樣我們可以提供更多的幫助。 –

回答

1

a.php只會文件

function get_preset() { 
    return (bunch of html, javascript); 
} 

echo get_preset(); 

b.php文件

<button type="button" id="preview">Preview Preset</button> 
<div id="preset_preview"> 
    <?php include "a.php"; ?> 
</div> 

<script> 
    $('#preview').on('click', function(e) { 
     e.preventDefault(); 
     $("#preset_preview").load('a.php'); 
    }); 
</script> 

有jQuery的AJAX的幾種方法,你可以實際使用。上面的示例使用load(),它使用get方法(通過調用ajaxSetup(),無論如何可以覆蓋其請求方法)將相應的URL包含到a.php的相對URL中。

您可以看到a.php echo ing(字符串?)get_preset()函數,然後將函數放入<div id="preset_preview">的b.php文件中。


爲了擴大在這種情況下AJAX的需求,是因爲PHP不僅會像

  1. 入門的請求,不管方法是什麼(GET,POST,PUT等)
  2. 返回響應。通常在你做了一些與請求值相關的邏輯之後。

只要您的預期響應呈現給客戶端,它就會死亡。返回響應後,你無法在牆後做任何魔法。換句話說,頁面加載是需要的。

然後AJAX來幫助您創建另一個請求到相應的PHP文件。它複製一個PHP文件來完成(另一個)請求 - >執行一些邏輯 - >然後返回它。默默地,沒有頁面加載。

並在迴應評論 - 這可以通過函數調用以某種方式完成,而不包括在preset_preview中的實際的PHP文件?

這都是的。只要你服務任何來電者的需求。

a.php只會文件

function get_preset() { 
    return (bunch of html, javascript); 
} 

echo get_preset(); 

的a.php只會僅僅是echo荷蘭國際集團get_preset()

b.php

<button type="button" id="preview">Preview Preset</button> 
<div id="preset_preview"></div> 

<script> 
    $('#preview').on('click', function(e) { 
     e.preventDefault(); 
     $("#preset_preview").load('a.php'); 
    }); 
</script> 

的b.php文件簡單地做一個請求a.php只會文件。每當點擊帶有選擇器ID #preview的按鈕時,它將加載任何一個.php內容到#preset_preview

您也可以在頁面準備好之後渲染a.php的內容。這與我上面寫的第一個片段類似。

<script> 
    $(document).ready(function() { 
     $('#preset_preview').load('a.php'); 
    }); 

    $('#preview').on('click', function(e) { 
     e.preventDefault(); 
     $("#preset_preview").load('a.php'); 
    }); 
</script> 

它簡單地告訴你,你應該在b.php頁之後加載a.php只會是準備和「刷新」一次按鈕點擊。

+0

是的,get_preset回聲字符串。因此,在調用load('a.php')之前,a.php的內容在b.php中將不可見? – Toniq

+0

其實沒有,因爲'<?php include「a.php」; ?>'。但是你可以通過監聽頁面加載或使用'$(document).ready()'來實現類似的方法,這意味着你應該寫入'load()'方法兩次。 – Chay22

+0

但我只需要在我的請求中包含a.php(或者僅包含get_preset函數調用的字符串內容),而不是像上面的示例那樣。由於a.php是立即包含的,所以不確定上面的加載點是什麼。這正是我的問題,但我不知道如何執行它。 – Toniq