7

我是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()也不会发生调用。

知道为什么对 getDBData() 的调用仅在页面加载时发生而不是之后

如何getDBData()从javascript调用

4

6 回答 6

17

您实际上并不了解它是如何工作的。

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

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

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

于 2013-09-03T12:02:27.003 回答
13

您应该为此使用 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

于 2013-09-03T12:03:10.460 回答
1

您可以使用 AJAX 将服务器端 php vaue 放入 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 );                    
        }
        );
于 2013-09-03T12:04:33.157 回答
0

你可以通过ajax来实现。

这是使用 jquery 执行此操作的链接:使用 jquery $.ajax 调用 PHP 函数

于 2013-09-03T12:03:18.547 回答
0

使用 jQuery

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

            // put your response where you want to  

            }
        }); 
于 2013-09-03T12:03:42.467 回答
0

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

您必须将 getDBDate“外包”到自己的 .php 文件,在该文件中输出 json_encoded 字符串并使用 ajax 调用此文件并获取页面的输出。

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

于 2013-09-03T12:03:53.280 回答