我有一个PHP文件,其中包含从HTML收集的变量。我还有一个JavaScript函数。
我想通过PHP调用JavaScript函数,但我知道这是不可能的,因为PHP代码在JavaScript代码之前。
我把它放在JS代码之前,因为只有当PHP在JavaScript文件之前时,JavaScript才会从PHP代码中收集变量。
如何从PHP调用JS函数并仍然拥有变量? (通过echo'after();'
这是我的index.php:
{{1}}
感谢您的帮助。
编辑:我想在()之后调用该函数。
答案 0 :(得分:2)
替换
echo '<script>after();</script>';
带
$hasData = true;
然后你可以做类似
的事情$(document).ready(function(){
<?=isset($hasData) && $hasData === true ? 'after();' : ''?>
});
此外,您还会收到一个javascript错误,因为&#39; fullName&#39;没有定义。
答案 1 :(得分:0)
你在$(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>
答案 2 :(得分:0)
在脚本部分,您可以使用PHP代码在()之后运行函数
<script>
<?php
if(isset($_REQUEST['name']) && isset($_REQUEST['secondName']))
{
echo '<script>after();</script>';
}
?>
//more js code
</script>
PHP基本上是在输出之前将自己的代码放在HTML中。因此,根据您的条件,使用PHP块来打印您想要的内容。
答案 3 :(得分:0)
如果您希望将PHP
变量数据发送到JavaScript
并对其进行处理,那么就无需从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>
试试这段代码我相信它适合你。