开发者

issue calling JavaScript function from PHP

开发者 https://www.devze.com 2023-02-27 05:01 出处:网络
basically I am trying to call a javascript function 开发者_StackOverflow社区from my PHP and I am using code I know works in other situations however here is it not and I am at a loss as to why?

basically I am trying to call a javascript function 开发者_StackOverflow社区from my PHP and I am using code I know works in other situations however here is it not and I am at a loss as to why?

It may be something stupid as I have been staring at this screen for a long time :)

here is where I call the function:

if(isset($test_details['done_test'])){
    echo "getting here";
    echo "<SCRIPT LANGUAGE='javascript'>user_error();</SCRIPT>";
}

I successfully get 'getting here' printed however it does not call the JS function.

javascript function:

   function user_error(){
   document.write("working");
        //alert("User has already taken this test. Your are being redirected...");
        //setTimeout("window.location='home_student.php'",3000);
   }

The commented it what I do eventually want it to do.

Could anyone please shed some light.

Many thanks,

@Crimson - Here is what I tried after your advice...still no luck.

javascript now:

$(document).ready(function () {
     var done = "<?= $test_details['done_test'] ?>";
     if(typeof done != 'undefined'){
          $('WORKING').appendTo('#bodyArea'); // just to test
     }
});


By echoing <script>...</script> with PHP, you are not going to get the browser run the JS function!

PHP only outputs the HTML file that you want to send to the browser. The browser then parses this HTML and does a multitude of things before the page is displayed to the user.

Next, the user interacts with the displayed page (or some other browser related event like 'onload' happens) and the attached JS gets called.

So, if there is some JS that you want to run at a certain time, say immediately after the browser has finished loading the page, you need to create JS in the HTML file such that there is a JS function which gets called at the page load event like this:

<body onload="/*do something here*/"> ... </body>

It is better to use JQuery or some other JS frmework to accomplish something like this though.


Are you sure the function is already defined? Perhaps you declared your function after making the function call.

Additionally, although it's not really going to matter here, the proper way to have a javascript script tag is.

<script type="text/javascript"></script>

i.e. not language="javascript"


Replace the line you call the JS function with this:

echo '<script type="text/javascript">window.onload = user_error </script>' ; 

It should solve the problem. Because at the time you are calling user_error(), the function may not have been initialized by the browser. So you'll get an error since the function could not be found.

If the function is placed in an external .js file, it's very likely that you get this error, since the external file usually takes a while to be loaded. If the function deceleration is in the same file but after where you are calling it, same thing happens.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号