使用PHP中创建的变量从PHP调用Javascript函数
我在comment_insert.js文件中有一个javascript函数:使用PHP中创建的变量从PHP调用Javascript函数,javascript,php,function,Javascript,Php,Function,我在comment_insert.js文件中有一个javascript函数: function comment_insert(data,ul_id) { var t = ''; t += '<li class="comment-holder" id="_' + data.comment_id + '">'; t += '<div class="user-img">'; t += '<img src
function comment_insert(data,ul_id) {
var t = '';
t += '<li class="comment-holder" id="_' + data.comment_id + '">';
t += '<div class="user-img">';
t += '<img src="' + data.profile_img + '" class="user-img-pic" />';
t += '</div>';
t += '<div class="comment-body">';
t += '<h3 class="username-field" >' + data.Username + '</h3>';
t += '<div class="comment-text">' + data.comment + '</div>';
t += '</div>';
t += '<div class="comment-buttons-holder">';
t += '<ul>';
t += '<li class="delete-btn">[x]</li>';
t += '</ul>';
t += '</div>';
t += '</li>';
$('#' + ul_id).prepend(t);
}
调用的函数与comment_insert.js中的函数相同,它接受2个输入(数据和ul_id)。这些都是在display.php中创建的,然后我想执行该函数。假设php代码与Javascript位于同一文件中,并用于前端输出到浏览器,则可以执行以下操作:
<?php
$smthng = new stdClass();
$smthng->comment_id = 24;
$smthng->Userid = 1;
$smthng->comment = "Hard coded comments";
$smthng->Username = "Sagar_username";
//$smthng->profile_img = "images/Setting-icon.png";
$data = json_encode($smthng);
$ul_id = "ul218";
?>
<script type="text/javascript">
comment_insert(jQuery.parseJSON(<?php echo $data ?>), <?php echo $ul_id ?>);
</script>
注释插入(jQuery.parseJSON(),);
但是,如果该文件不在向浏览器生成输出的文件中,则无法执行Javascript服务器端要在PHP中执行Javascript,则需要安装 安装后,您应该通过file_get_contents将comment_insert.js解析为PHP变量,并以如下方式执行它:
<?php
$v8 = new V8Js();
/* Get you js file's content */
$JS = file_get_contents("PATH/TO/JS-FILE/comment_insert.js");
try {
$v8->executeString($JS, 'basic.js');
} catch (V8JsException $e) {
var_dump($e);
}
?>
function comment_insert(data,ul_id) {
var t = '';
t += '<li class="comment-holder" id="_' + data.comment_id + '">';
t += '<div class="user-img">';
t += '<img src="' + data.profile_img + '" class="user-img-pic" />';
t += '</div>';
t += '<div class="comment-body">';
t += '<h3 class="username-field" >' + data.Username + '</h3>';
t += '<div class="comment-text">' + data.comment + '</div>';
t += '</div>';
t += '<div class="comment-buttons-holder">';
t += '<ul>';
t += '<li class="delete-btn">[x]</li>';
t += '</ul>';
t += '</div>';
t += '</li>';
//$('#' + ul_id).prepend(t);
elem = document.getElementById(ul_id);
elem.insertBefore(t);
}
PHP在服务器上运行,Javascript在客户端运行。你不能从一个呼叫另一个。充其量,您可以从客户端->服务器调用AJAX调用php代码并获取其输出。您能为我提供解决此问题的AJAX调用吗?我已经厌倦了从短语“变量创建的可能重复”开始的问题,函数调用将在php代码中的相同for{}循环中执行。因此,我无法结束我的php代码并启动一个标记来调用函数。然后我建议您参考原始问题上的注释,Javascript无法在服务器端执行,除非您执行类似于Madhipie建议的操作(使用V8js扩展),您可以在php块之间添加脚本块,甚至是在for循环中。只需结束php?>
编写脚本块,然后再次打开
function comment_insert(data,ul_id) {
var t = '';
t += '<li class="comment-holder" id="_' + data.comment_id + '">';
t += '<div class="user-img">';
t += '<img src="' + data.profile_img + '" class="user-img-pic" />';
t += '</div>';
t += '<div class="comment-body">';
t += '<h3 class="username-field" >' + data.Username + '</h3>';
t += '<div class="comment-text">' + data.comment + '</div>';
t += '</div>';
t += '<div class="comment-buttons-holder">';
t += '<ul>';
t += '<li class="delete-btn">[x]</li>';
t += '</ul>';
t += '</div>';
t += '</li>';
//$('#' + ul_id).prepend(t);
elem = document.getElementById(ul_id);
elem.insertBefore(t);
}