如何在定义函数之前调用它?

时间:2017-12-08 17:22:46

标签: javascript php jquery ajax

我在函数内部放置了一个AJAX调用,当有错误(例如输入字段为空)时通过PHP调用,以向用户显示通知,但是我收到此错误:

  

未捕获的ReferenceError:未定义发送通知

我知道为什么会这样......但我不知道如何修复它。这是因为我正在调用一个尚未定义的函数。这是我的两个文件的极其简化的版本:

的index.php:

<?php

include('con.php'); // the file which connects to the database

echo'<script>sendnotification();</script>'; // calls the function which is in footer.php

include('header.php'); // the file which contains the document headers and imports the jQuery and other libraries

include('footer.php');

?>

我导入header.php后无法放置回显线,因为它位于验证表单的函数内,而其他if语句会导致已经发送的标题#39;错误。

footer.php:

<script>
function sendnotification() {
   // do something
}
</script>

2 个答案:

答案 0 :(得分:0)

echo'<script>sendnotification();</script>';会立即调用发送通知功能。但是,由于您在页脚中定义了该函数,因为页脚尚未加载,因此会抛出错误。

要解决此问题,请填写

<script>
function sendnotification() {
   // do something
}
</script>

高于<script>sendnotification();</script>

的某个地方

或者,您可以检查文档是否准备就绪。

<script>
function sendnotification() {
    let interval = setInterval(() => {
        if (document.readyState === "complete") {
            clearInterval(interval);
            // do something
        }
     }, 100);
}
</script>

答案 1 :(得分:0)

如果你在标题之后调用它(根据你的评论,你是否包含jQuery),该怎么办?

<?php

include('con.php'); // the file which connects to the database

include('header.php'); // the file which contains the document headers and imports the jQuery and other libraries

echo'<script>$(document).ready(function(){sendnotification();});</script>'; // calls the function which is in footer.php

include('footer.php');

?>