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.