php脚本调用父javascript函数

I have this folder structure:

index.php

js/scripts.js

In index.php I have a JavaScript function defined called execute().

Now within index.php I have a form that when submitted will call email.php and at the end of the execution of the email.php I do this:

echo '<script type="text/javascript">parent.execute();</script>';

This all works fine.

Now when I move execute() into scripts.js and I put this line of code in index.php:

<script type="text/javascript" src="js/script.js"></script>

then email.php is somehow unable to find execute() function. I know this because if I modify the execute function only the original version (the one that was in index.php) is ran.

I know this is weird, but I am new to this and I don't know of anyway I can debug this. Is there something obvious that I am missing?

First, make sure you don't have a typo in your <script> tag. You've referred to your external script file as both script.js and scripts.js. One little 's' can make all the difference.

Assuming you've included your script correctly, most likely, you have put execute within another function, thus taking it out of the global scope. That would be the case if script.js looks something like this:

(function () {
    ...
    function execute () {
        ...
    }
})();

If that's the case, move execute out of it's containing function. You can also put execute in the global scope by explicitly making it a property of window:

window.execute = function execute () {
    ...
};

If you do it this way, it's fine to leave execute within another function.