【问题标题】: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】:
你不能直接调用它。编写 AJAX 和 call 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);
});
}