How to Call a JavaScript Function from PHP

How to call a JavaScript function from PHP?

As far as PHP is concerned (or really, a web server in general), an HTML page is nothing more complicated than a big string.

All the fancy work you can do with language like PHP - reading from databases and web services and all that - the ultimate end goal is the exact same basic principle: generate a string of HTML*.

Your big HTML string doesn't become anything more special than that until it's loaded by a web browser. Once a browser loads the page, then all the other magic happens - layout, box model stuff, DOM generation, and many other things, including JavaScript execution.

So, you don't "call JavaScript from PHP", you "include a JavaScript function call in your output".

There are many ways to do this, but here are a couple.

Using just PHP:

echo '<script type="text/javascript">',
'jsfunction();',
'</script>'
;

Escaping from php mode to direct output mode:

<?php
// some php stuff
?>
<script type="text/javascript">
jsFunction();
</script>

You don't need to return a function name or anything like that. First of all, stop writing AJAX requests by hand. You're only making it hard on yourself. Get jQuery or one of the other excellent frameworks out there.

Secondly, understand that you already are going to be executing javascript code once the response is received from the AJAX call.

Here's an example of what I think you're doing with jQuery's AJAX

$.get(
'wait.php',
{},
function(returnedData) {
document.getElementById("txt").innerHTML = returnedData;

// Ok, here's where you can call another function
someOtherFunctionYouWantToCall();

// But unless you really need to, you don't have to
// We're already in the middle of a function execution
// right here, so you might as well put your code here
},
'text'
);

function someOtherFunctionYouWantToCall() {
// stuff
}

Now, if you're dead-set on sending a function name from PHP back to the AJAX call, you can do that too.

$.get(
'wait.php',
{},
function(returnedData) {
// Assumes returnedData has a javascript function name
window[returnedData]();
},
'text'
);

* Or JSON or XML etc.

calling javascript function from php

Your html is invalid. You're missing some tags.

And you need to call the function after it has been declared, like this

<html>
<head>
<title></title>

<script type="text/javascript">
function run(){
alert("hello world");
}

<?php
echo "run();";
?>
</script>

</head>
<body>
</body>
</html>

In this case you can place the run before the method declaration, but as soon as you wrap the method call inside another script tag, the script tag has to be after the method declaration.

Try yourself http://jsfiddle.net/qdwXv/

Calling JavaScript functions via PHP

Replace

echo '<script>after();</script>';

with

$hasData = true;

Then you can do something like

$(document).ready(function(){
<?=isset($hasData) && $hasData === true ? 'after();' : ''?>
});

Also, you'll receive a javascript error as 'fullName' isn't defined.

Automatically calling a javascript function from php

<script>my_func('<?php echo $custom_error; ?>');</script>

its working



Related Topics



Leave a reply



Submit