我有一个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>
试试这个代码,我相信它对你有效。