2015-09-13 159 views
2

提示:「您可以簡單地發送一個json對象/數組從php到js,並執行每個條目,如」update_match('1');「使用eval()函數,請停止發送js代碼那樣「 - Lucian Depold。執行腳本AJAX返回


在index.php,我有這樣的代碼,它執行時該文件已準備就緒:

$.post('php/main.php', {elements: 1}, function(return_msg) { 
    alert(return_msg); 
}); 

我得到的響應是一堆腳本,如預期,與預期值。但是,他們不執行!如何讓他們執行?

這裏是迴應:

<script>jsfunction(37069);</script><script>updateTextbox('');</script><script>update_match('1', '19.30 Friday 15/5', '1');</script><script>update_player('1', '1', 'recoba', 'cmf', 'teo', '0', '0');</script><script>update_player('1', '2', 'nesta', 'cb', 'tsoulou', '0', '0');</script><script>update_player('1', '3', 'raul', 'cf', 'striker', '0', '0');</script><script>update_player('1', '4', 'samuel', 'cb', 'mafia', '', '1');</script><script>update_player('1', '5', 'deisler', 'cmf', 'free_kick', '1', '');</script><script>update_player('1', '6', 'ferdinard', 'cb', 'strong', '1', '');</script><script>update_match('2', 'Match 2', '0');</script> 

當我有這樣的生產在index.php的底部這些腳本,所有正確的地方叫JS功能的PHP代碼。由於這個question雖然,我不得不將代碼移動到另一個.php文件。

+0

要通過AJAX返回運行js代碼? –

+0

是@Dagon,但我想我已經得到了答案。 – gsamaras

+1

一切正常,只需要澄清 –

回答

2

這樣來做:

在PHP ...

$arrayOfCalls = array(); 
$arrayOfCalls[]="update_match('1')"; 
$arrayOfCalls[]="update_match('2')"; 

$dummy = array(); 
$dummy['calls'] =$arrayOfCalls; 
echo json_encode($dummy); 

而且在Javascript ...

$.post('php/main.php', {elements: 1}, function(return_json) { 
    return_json = JSON.parse(return_json); 
    return_json.calls.forEach(function(code){ 
    eval(code); 
    }) 
}); 
+0

我們不需要在post調用中指定我們發送的數據是JSON格式嗎? – gsamaras

+0

您發送給php的數據,還是從php到js? –

+0

從php到js。另外,在'eval()'調用之後,不應該在括號之後使用分號嗎? – gsamaras

1

您可以將結果添加到您的網頁:

$.post('php/main.php', {elements: 1}, function(return_msg) { 
    $('body').append(return_msg); 
}); 

的代碼會被執行,但我不知道這是否是安全的做到這一點。

+0

是的!我不知道,謝謝!不安全?爲什麼? – gsamaras

1

AJAX調用發送的日期只是數據或文本。爲了將其解釋爲JavaScript,您必須將其附加到dom。

兩種方式:第一 通過直接附加數據:

$.post('php/main.php', {elements: 1}, function(return_msg) { 
    alert(return_msg); 
    $('body').append(return_msg); 
}); 

但也有一個shorthand method

$.getScript('php/main.php?elements=' + 1, function() { 
    // script loaded 

}); 

請閱讀文檔,也有一些注意事項!

+0

謝謝!簡寫方法使用+1。 – gsamaras