通过PHP调用JavaScript函数


Calling JavaScript functions via PHP

我有一个PHP文件,其中包含从HTML收集的变量。我还有一个JavaScript函数。

我想通过PHP调用JavaScript函数,但我知道这是不可能的,因为PHP代码在JavaScript代码之前。

我把它放在JS代码之前,因为只有当PHP在JavaScript文件之前时,JavaScript才会从PHP代码中收集变量。

如何从PHP中调用JS函数,并且仍然有变量?(通过回声'after();'

这是我的index.php:

<?php
if(isset($_REQUEST['name']) && isset($_REQUEST['secondName']))
{
    $name = $_REQUEST['name'];
    $secondName = $_REQUEST['secondName'];
    echo '<script>after();</script>';
}
else
{
    $name = '';
    $secondName = '';
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    function after()
    {
    var name = '<?=$name?>';
    var secondName = '<?=$secondName?>';
    var str = "         ";
    if(!str.replace(/'s/g, '').length)
    {
        alert("error");
    }
    else
    {
        $("#pre-text").fadeIn();
        $("#text").html(fullName);
        $("#pre-text").click(function(){
        $(this).fadeOut();
        });
    }   
    }
});
</script>
</head>
<body>
<form method="get">
<p>First name: <input type="text" name="name"></p>
<p>Second name: <input type="text" name="secondName"> <input type="submit"></p>
<p id="pre-text" style="display:none">Your first name is: <span id="text"></span>. You can also click me to hide.</p>
</form>
</body>
</html>

谢谢你的帮助。

EDIT:我想调用after()函数。

更换

echo '<script>after();</script>';

带有

$hasData = true;

然后你可以做一些类似的事情

$(document).ready(function(){
    <?=isset($hasData) && $hasData === true ? 'after();' : ''?>
});

此外,由于未定义"fullName",您将收到一个javascript错误。

在$(document).ready块中执行after()函数。所以你不能这样称呼它。所以我认为你应该做这个

更改

echo '<script>after();</script>';

echo '<script>$(document).ready(function(){after()};</script>';

并更改

<script>
$(document).ready(function(){
    function after()
    {
    var name = '<?=$name?>';
    var secondName = '<?=$secondName?>';
    var str = "         ";
    if(!str.replace(/'s/g, '').length)
    {
        alert("error");
    }
    else
    {
        $("#pre-text").fadeIn();
        $("#text").html(fullName);
        $("#pre-text").click(function(){
        $(this).fadeOut();
        });
    }   
    }
});
</script>

<script>
    function after()
    {
    var name = '<?=$name?>';
    var secondName = '<?=$secondName?>';
    var str = "         ";
    if(!str.replace(/'s/g, '').length)
    {
        alert("error");
    }
    else
    {
        $("#pre-text").fadeIn();
        $("#text").html(fullName);
        $("#pre-text").click(function(){
        $(this).fadeOut();
        });
    }   
    }
</script>

在脚本部分,您可以使用PHP代码运行函数after()

<script>
<?php
if(isset($_REQUEST['name']) && isset($_REQUEST['secondName']))
{
    echo '<script>after();</script>';
}
?>
//more js code
</script>

PHP基本上是在输出代码之前将自己的代码放入HTML中。因此,根据您的条件,使用PHP块来打印您想要的内容。

如果您希望PHP变量数据到JavaScript并对其进行处理,则无需从PHP 调用JavaScript函数

<?php
if(isset($_REQUEST['name']) && isset($_REQUEST['secondName']))
{
    $name = $_REQUEST['name'];
    $secondName = $_REQUEST['secondName'];
}
else
{
    $name = '';
    $secondName = '';
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    var name = '<?php echo $name; ?>';
    var secondName = '<?php echo $secondName; ?>';
    var str = "         ";
    if(!str.replace(/'s/g, '').length)
    {
        alert("error");
    }
    else
    {
        $("#pre-text").fadeIn();
        $("#text").html(fullName);
        $("#pre-text").click(function(){
        $(this).fadeOut();
        });
    }   
});
</script>
</head>
<body>
<form method="get">
<p>First name: <input type="text" name="name"></p>
<p>Second name: <input type="text" name="secondName"> <input type="submit"></p>
<p id="pre-text" style="display:none">Your first name is: <span id="text"></span>. You can also click me to hide.</p>
</form>
</body>
</html>

试试这个代码,我相信它对你有效。