【问题标题】:Calling a php function via ajax [duplicate]通过ajax调用php函数[重复]
【发布时间】:2012-09-30 15:16:04
【问题描述】:

可能重复:
Creating jQuery AJAX requests to a PHP function

我正在尝试运行一个非常简单的公式,

调用一个网页,每隔几秒左右Ajax调用一个php函数来回显“Hello World”

<?php
function test(){
     echo "Hello World";
}
?>
<script type="text/javascript">

function testingTimer()
{
    //CALL PHP FUNCTION CALLED TEST
}

setInterval('testingTimer()',5000);
</script>

我只需要调用已经声明的 php 函数的代码。

【问题讨论】:

标签: php javascript ajax function


【解决方案1】:

你不能直接调用它。编写 AJAXcall URL 的代码,如 myfile.php?action=test 和文件 myfile.php 写入如果操作 GET 变量等于测试然后调用它函数,不要忘记退出代码以防止任何其他输出。

【讨论】:

    【解决方案2】:

    Google 了解如何进行 ajax 调用。这是在太多教程中解释的基础知识,并且取决于您是否使用框架以及使用哪个框架。

    【讨论】:

      【解决方案3】:

      您可以发布一些内容,例如:

      function testingTimer()
      {
           $.post(URL,
                  {
                  foo : 'foo'
                  }
           );
      }
      

      并在php中检查帖子:

      if (isset($_POST['foo']))
          test();
      

      【讨论】:

        【解决方案4】:

        AJAX 无法自行调用任意 php 函数。 AJAX 允许您连接到给定页面并请求数据。话虽如此,您可以使用 AJAX 加载给定页面,该页面所做的只是调用您的测试函数:

        【讨论】:

          【解决方案5】:

          根据您的示例代码,我假设您尝试在单个文件中完成所有这些操作。您遇到的问题是 PHP 在页面加载之前/加载时在服务器端运行。一旦加载它就不能在不刷新的情况下重新执行。

          您需要将 PHP 放在一个单独的文件中,以便 AJAX 通过 HTTP 调用它并返回响应。

          像这样(如果使用 jQuery):

          $.ajax('helloworld.php', function(data){
              alert(data);
          }, 'html');
          

          如果实施正确,应该弹出 hello world。

          【讨论】:

            【解决方案6】:

            您应该使用jQuery 来使用ajax function

            您不应该使用 setInterval,而应在服务器响应后使用 setTimeout,因为如果服务器响应时间超过 5000 秒,那么您将同时收到两个请求。 如果你想设置超时,你总是可以在 jqXHR 对象上看到 abort 函数。

            例如,你可以这样做:

            function refresh() {
                $.ajax({
                    type: 'GET',    // can be POST or GET
                    url: 'page.php' // php script to call
                // when the server responds
                }).done(function(response) {
                    console.log(response);
                    // call your function automatically
                    setTimeout(refresh, 5000);
                });
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-06-01
              • 2013-06-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-08-09
              • 1970-01-01
              相关资源
              最近更新 更多