我提交(echo)在提交表单时从PHP调用javascript函数。我有一个错误function is not defined
。我知道PHP是在Javascript之前加载的,因此,函数没有在PHP调用中定义。
我甚至可以在HTML部分创建onclick
,但下面的示例是更大程序的一部分,PHP脚本位于单独的文件中,该文件包含在HTML页面的顶部,该函数也会收到调用时不同的参数和执行不同的操作,它将是一个AJAX函数。此外,我有一些变量作为页面渲染加载,我只想在程序中的某个点调用JS函数。将PHP移到底部并不优雅,因为我必须在顶部添加一些PHP以包含所有变量。
有没有办法将PHP部分包含在顶部,并且在需要时仍然可以使用一系列参数调用AJAX函数?或者甚至更好的做这种事情的最佳方式是什么?我相信通过PHP回应javascript并不是最好的做法。
<?php
if (isset($_POST['a'])) {
echo "<script type='text/javascript'>example('hello');</script>";
echo "<script type='text/javascript'>printSome(0,0);</script>";
}
?>
<!DOCTYPE html>
<html>
<body>
<form method="post">
<input type="text">
<input type="submit" name="a">
</form>
</body>
<script type='text/javascript'>
function example(variable)
{
window.alert(variable);
}
function printSome(type, quantity)
{
return $.ajax({
url : 'http://localhost/printDoc.php',
type : 'POST',
dataType : 'json',
data : {
DTStype : type,
DTSquantity : quantity
},
cache : false
});
}
</script>
</html>
答案 0 :(得分:2)
试试这个
<!DOCTYPE html>
<html>
<body>
<form method="post">
<input type="text">
<input type="submit" name="a">
</form>
</body>
<script type='text/javascript'>
function example(variable)
{
window.alert(variable);
}
</script>
<?php
if (isset($_POST['a'])) {
echo "<script type='text/javascript'>example('hello');</script>";
}
?>
</html>
答案 1 :(得分:2)
这只是因为当它尝试执行示例函数时,它尚未定义。 您可以通过使用事件侦听器来解决此问题:
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r'C:\your_system_path\chromedriver.exe')
不仅如此,在主体外部使用脚本标签无效,尽管大多数浏览器可能仍会运行它。因此,我建议你将页面的整个php部分移动到body ../ body标签内的某个位置。