提示:“你可以简单地将一个json对象/数组从php发送到js,并执行每个条目,如”update_match('1');“使用eval()函数,请停止以这种方式发送js代码” - Lucian Depold。
在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底部生成这些脚本的PHP代码时,所有js函数都被正确调用。但是由于这个question,我不得不将代码移动到另一个.php文件。
答案 0 :(得分: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);
})
});
答案 1 :(得分:1)
您可以将结果附加到您的网页:
$.post('php/main.php', {elements: 1}, function(return_msg) {
$('body').append(return_msg);
});
代码将被执行,但我不确定这样做是否安全。
答案 2 :(得分: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
});
请阅读文档,有一些警告!