如何在不重新加载页面的情况下运行php函数

时间:2013-09-03 11:59:23

标签: php javascript

我是php的新手

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

正如日志中所观察到的那样,getDBData在页面加载过程中只被调用一次,甚至在dbData = <?php echo json_encode(getDBData()); ?>此代码后调用getDBData()也不会发生。{/ p>

任何想法为什么调用getDBData()只发生在页面加载而不是之后

如何从javascript调用getDBData()

6 个答案:

答案 0 :(得分:14)

你实际上并不了解它是如何运作的。

Javascript是一种客户端语言,这意味着它在Web浏览器中执行。 PHP是服务器端,这意味着它在服务器上执行。

在处理请求时,首先执行PHP,将响应返回给用户,然后执行Javacript。

要在客户端和服务器之间进行通信,您可以使用ajax请求,这些请求基本上是简单的http请求,但不会重新加载整个页面。

答案 1 :(得分:10)

你应该使用Ajax。即你有一个php文件,它返回函数的输出:

// 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>

上面的代码使用jQuery

答案 2 :(得分:0)

您可以通过 ajax 来完成。

以下是jquery:using jquery $.ajax to call a PHP function

的链接

答案 3 :(得分:0)

使用jquery

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

            // put your response where you want to  

            }
        }); 

答案 4 :(得分:0)

您不能直接从javascript调用PHP函数。

你必须将getDBDate“外包”到一个自己的.php文件,在那里你输出json_encoded字符串并用ajax调用这个文件并得到页面的输出。

在javascript中最容易做的AJAX请求是使用JQuery库:http://api.jquery.com/jQuery.ajax/

答案 5 :(得分:0)

你可以使用AJAX将服务器端的php值转换为javascript变量阅读这个ajax示例并实现它。

            // 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 );                    
        }
        );