在PHP验证之前加载JS函数

时间:2017-11-13 12:06:12

标签: javascript php jquery html ajax

我提交(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>

2 个答案:

答案 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标签内的某个位置。