Javascript and PHP functions

Solution 1:

You can not call a PHP function from Javascript...

Javascript is a client language (it's executed on the Web browser, after receiving the web page) while PHP is on the server side (it's executed before the web page is rendered). You have no way to make one call another.

...but you can get the result of an external PHP script

There is a Javascript function called xhttprequest that allows you to call any script on the Web server and get its answer. So to solve your problem, you can create a PHP script that outputs some text (or XML, or JSON), then call it, and you analyze the answer with Javascript.

This process is what we call AJAX, and it's far easier to do it with a good tool than yourself. Have a look to JQuery, it's powerful yet easy to use Javascript library that has built-in AJAX helpers.

An example with JQuery (client side) :

$.ajax({
   type: "POST", // the request type. You most likely going to use POST
   url: "your_php_script.php", // the script path on the server side
   data: "name=John&location=Boston", // here you put you http param you want to be able to retrieve in $_POST 
   success: function(msg) {
     alert( "Data Saved: " + msg ); // what you do once the request is completed
   }

Solution 2:

Sounds like you want AJAX.

This is too big a topic for a single answer, but that should get you going.

Basically, the Javascript will send an HTTP request to a PHP script on your server and then do something with the response. JSON is probably something you'll want to learn about too.

Solution 3:

It's indirectly possible to call a PHP function using JavaScript. As other people have already mentioned, you're going to want to do some type of request - this doesn't necessarily have to be Ajax. It could be synchronous. Without knowing exactly what you're trying to accomplish, here's what I would suggest:

  • Attach an event handler to the form's submit option (or use the standard submit if you're not going to use Ajax)
  • Bundle up any parameters that will need to be passed to the PHP function either in a POST or in the query string of the address to the page.
  • Fire the request (either asynchronously or via submit)
  • In the PHP script that is the target of the request, pull out of the parameters from the $ _ POST or $ _ GET.
  • Call the PHP function that you need with the parameters.
  • Echo back the response and parse it as needed once the request completes.

Again, this is a bit general but so is your question. Hopefully this gives some sort of direction.

Solution 4:

The closest you are going to get will be xajax which will let you wrap a PHP function into an AJAX call. I've used it quite a bit before I started working with Zend Framework and found it too hard to implement in an OO way.

With xajax you write a PHP function that does all of your regular logic and then returns a ObjectResponse object that manipulates the browser through AJAX (alert boxes, change HTML, CSS, etc). You register your function with xajax and then xajax will spit out some javascript into your HTML's section.

In your HTML you just call that javascript function that xajax generated and it takes care of the rest through AJAX.