2014-06-14 25 views
-1

是否可以使用Ajax調用從PHP運行JavaScript函數。從Ajax運行PHP中的JavaScript

例如,如果我在PHP中使用ajax調用了一個html頁面。阿賈克斯後被髮送到一個PHP引擎:

的index.php

<script> 
    Ajax.post('http://example.com/ajaxEngine.php', { data: "someData" }); 
</script> 

然後在PHP引擎,可我運行一個JavaScript函數是這樣的:

ajaxEngine.php

<?php 

$data = $_POST['data']; 

?> 
<script type="text/javascript"> 
    var php_var = "<?php echo data ?>"; 
    function doSomething(php_var) { 
    // do something with data 
    } 
</script> 

最後,如果JavaScript函數需要返回一個值,那麼你會如何轉移回php?我可以發佈到同一頁面,然後將它作爲PHP的變量嗎?

+0

* *爲什麼你需要嗎?爲什麼你不能在發送AJAX請求之前先做些什麼? – brasofilo

+0

因爲我想隱藏腳本,所以沒有做出任何'意義上的' –

+0

。 – user3143218

回答

1

簡短的回答:第

你在ajaxEngine.php代碼將只是片斷的JavaScript的輸出。這將被轉移回您的頁面,所以您可以將其插入腳本標記或評估它,如果你喜歡它執行。但是,這會發生在客戶端而不是您的服務器上。不過,該腳本會擁有來自php的動態數據。所以,如果這是你需要的一切,那就是這樣。

注意:這不會隱藏您的腳本。這對任何客戶都是可見的。

0

試試這個功能

function includetext(text,onlyone) 
{ 
    var d=document.createElement('script'); 
    if(onlyone) 
    { 
     var ds=document.getElementById('onlyonesscript'); 
     if(ds) 
      removeElement(ds); 
     d.id='onlyonesscript'; 
    } 
    d.innerHTML=text; 
    document.body.appendChild(d); 
} 

text - 從阿賈克斯returing腳本的文本。

onlyone只用於一個腳本節點,這會幫助你。

ajaxEngine.php

<?php 

$data = $_POST['data']; 

?> 
var php_var = "<?php echo data ?>"; 
// do something with data