如何在不刷新页面的情况下运行PHP函数

8

我是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()而不是之后呢?

如何从Javascript中调用getDBData()


1
你必须使用AJAX来完成这个任务,使用jQuery的http://api.jquery.com/jQuery.ajax/。 - ka_lin
1
通过 Ajax 请求。 - Björn
3
发帖前请先搜索,因为有很多重复的内容。链接为 http://stackoverflow.com/search?q=call+php+function+in+javascript - MDEV
6个回答

17

你实际上并不理解它是如何工作的。

Javascript 是客户端语言,也就是说它在 Web 浏览器中运行。PHP 是服务器端语言,也就是说它在服务器上运行。

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

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


是的,它与Java JSP + JavaScript相同。所有编程语言在基本逻辑上几乎都是相同的。 感谢dragoste和所有其他人。 - veer7

14

你应该使用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


1
这是一个更加建设性的答案,实际上回答了这个问题。 - Ryan Walker

1

您可以使用 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 );                    
        }
        );

1
他甚至不理解客户端和服务器端的概念,你给他20行jQuery代码和ajax请求?这不是正确的方式。 - Jakub Matczak

0

使用jQuery

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

            // put your response where you want to  

            }
        }); 

0

0

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接