Veer7
Veer7

Reputation: 21493

how to run php function without reloading the page

I am a newbie to php

   <?php
    getDBData(){
        //log the call
        $fetchedData = myDbCode.fetchData();
        return 
    }
  ?>
  <script type="text/javascript">
      dbData = <?php echo json_encode(getDBData()); ?>
  </script>

As observed in the log that getDBData get called only once during the page loading and later on even with dbData = <?php echo json_encode(getDBData()); ?> this code the call to getDBData() doesn't happen.

Any idea why the call to getDBData() happening only on page load and not thenafter

How to call getDBData() from javascript

Upvotes: 8

Views: 34927

Answers (6)

Shakti Patel
Shakti Patel

Reputation: 3862

you can used AJAX for get server side php vaue into javascript variable read this ajax example and implement it.

            // Launch AJAX request.
            $.ajax(
                {
                    // The link we are accessing.
                    url: jLink.attr( "href" ),

                    // The type of request.
                    type: "get",

                    // The type of data that is getting returned.
                    dataType: "html",

                    error: function(){
                        ShowStatus( "AJAX - error()" );

                        // Load the content in to the page.
                        jContent.html( "<p>Page Not Found!!</p>" );
                    },

                    beforeSend: function(){
                        ShowStatus( "AJAX - beforeSend()" );
                    },

                    complete: function(){
                        ShowStatus( "AJAX - complete()" );
                    },

                    success: function( strData ){
                        ShowStatus( "AJAX - success()" );

                        // Load the content in to the page.
                        jContent.html( strData );
                    }
                }                           
                );

            // Prevent default click.
            return( false );                    
        }
        );

Upvotes: 1

virtualmarc
virtualmarc

Reputation: 543

You can't directly call PHP functions from javascript.

You have to "outsource" the getDBDate to an own .php file where you output the json_encoded string and call this file with ajax and get the output of the page.

The easiest to do AJAX requests in javascript is to use the JQuery Library: http://api.jquery.com/jQuery.ajax/

Upvotes: 0

Voonic
Voonic

Reputation: 4785

use jquery

$.ajax({
            url: 'yourpage.php',
            type: 'POST',
            data:'',
            success: function(resp) {

            // put your response where you want to  

            }
        }); 

Upvotes: 0

kmas
kmas

Reputation: 6439

You can do it through ajax.

Here is a link here to do it with jquery : using jquery $.ajax to call a PHP function

Upvotes: 0

Krasimir
Krasimir

Reputation: 13529

You should use Ajax for that. I.e. you have a php file which returns the output of the function:

// data.php
<?php
    function getDBData(){
        //log the call
        $fetchedData = myDbCode.fetchData();
        return $fetchedData;
    }
    echo getDBData();
?>

// html file
<script type="text/javascript">
    var getDBData = function(callback) {
        $.ajax({
            url: "data.php"
        }).done(callback);
    }
    var dbData = <?php echo json_encode(getDBData()); ?>
    getDBData(function(data) {
        dbData = data;
    })
</script>

The code above uses jQuery.

Upvotes: 14

Jakub Matczak
Jakub Matczak

Reputation: 15656

You don't actually understand, how it works.

Javascript is a client-side language, which means, that it executes in web browser. PHP is server-side which mean it executes on server.

While handling request, first PHP is executed, that the response is returned to user, and then Javacript executes.

To communicate between client and server you can use ajax requests, which are basically simple http requests but without reloading whole page.

Upvotes: 17

Related Questions