在JavaScript代码中运行PHP函数

running a php function inside javascript code

本文关键字:PHP 函数 运行 JavaScript 代码      更新时间:2023-09-26

我也希望在javascript代码中运行php代码,我喜欢这样:

<?php function categoryChecking(){
return false;
}?>
....
function openPlayer(songname, folder)
{
if(<?php echo categoryChecking() ?> == true)
{
if (folder != '')
{
    folderURL = "/"+folder;
}else
{
    folderURL = '';
}
    var url        = "/users/player/"+songname+folderURL;
    window.open(url,'mywin','left=20,top=20,width=800,height=440'); 
 }else{
    alerte('you should click on a subcategory first');
}
}
....
<a href='javascript:void();' onClick="openPlayer('<?php echo $pendingSong['id']; ?>','')">

最后我收到此错误,而是警报消息"您应该先单击子类别"

ReferenceError: openPlayer is not defined

openPlayer('265','')
你把

测试用例缩小得太远了,无法确定问题是什么,但鉴于你收到的错误消息,你的直接问题与 PHP 无关。

您尚未在调用它的 onclick 属性的范围内定义openPlayer。据推测,早期的 JS 代码要么根本不在脚本元素中,要么包装在一个函数中,该函数将限定它的范围并防止它成为全局。

更新:@h2ooooooo在注释中指出,您的PHP正在生成JS:

if( == true)

检查浏览器的错误控制台。您需要首先处理第一条错误消息,因为它们可能会产生连锁反应。在这种情况下,脚本中的解析错误将导致无法定义函数。


但是,一旦解决了这个问题,看起来您将在尝试编写双向代码时遇到问题,其中一些是客户端,有些是服务器端。

您不能从 JavaScript 运行 PHP 代码,因为 PHP 是一种服务器端语言(在服务器上运行),而 JavaScript 是一种客户端语言(在浏览器中运行)。

您需要使用 AJAX 向 PHP 页面发送 HTTP 请求,然后您的 PHP 页面应该给出响应。使用 AJAX 发送 HTTP 请求的最简单方法是使用 jQuery ajax() 方法。

创建一个 PHP 文件ajax.php,并将以下代码放入其中:

<?php
   $value = false; // perform category check
   echo $value ? 'true' : 'false';
?>

然后,在你的JavaScript代码中,你应该首先添加一个对jQuery的引用:

<script type="text/javascript" src="jquery.js"></script>

然后,使用此 AJAX 代码获取布尔值:

<script type="text/javascript">
    $.ajax('ajax.php')
        .done(function(data) {
            var boolValue = data == 'true'; // converts the string to a bool
        })
        .fail(function() {
             // failed
        });
</script>

因此,您的代码应如下所示:

function openPlayer(songname, folder) {
    $.ajax('ajax.php')
        .done(function (data) {
        var boolValue = data == 'true'; // converts the string to a bool
        if (boolValue) {
            if (folder != '') {
                folderURL = "/" + folder;
            } else {
                folderURL = '';
            }
            var url = "/users/player/" + songname + folderURL;
            window.open(url, 'mywin', 'left=20,top=20,width=800,height=440');
        } else {
            alert('you should click on a subcategory first');
        }
    })
        .fail(function () {
        // failed
    });
}