我确信这方面有一个简单的答案,但我现在正在画一个空白,任何建议指针都会很棒。
我有一个php页面[比如说counter.php],当调用[loaded / viewing]时,它连接到db并递增计数器。 我还有另一个页面有一个选择框,我想在onchange事件上添加一个.js函数,它将调用/轮询counter.php文件,从而增加计数器。
有没有办法从.js调用或轮询和文件/页面,我知道这可以通过HttpRequest完成,但这似乎有点矫枉过正,因为我不想返回任何内容或更改页面上的任何内容。
提前致谢
.K
感谢您的回答,但也许我不清楚,我不想在页面上返回任何内容或更改任何内容,我只想轮询该页面。我正在寻找一种更简单的方法,而不需要使用ajax / iframe。
以下是我的例子:
<?php
// connect to db
// increment counter val
// DOES NOT RETURN ANYTHING
?>
<script>
increment()
{
// I Just need to poll the page [counter.php] here,
// thus incrementing the counter, ie no change on this page !
};
</script>
<select onchange="increment();"> ... </select>
答案 0 :(得分:6)
我认为你的意思是你想要实现ajax:
http://en.wikipedia.org/wiki/Ajax_(programming)
我能想到的最快捷的途径是实现这样的目标:
<?php
echo '1';
?>
下载jQuery
在文档的标题中执行以下操作:
<script>
$(document).ready(function() {
$('#idOfaDiv').load('counter.php');//'1' will be injected into div id="idOfaDiv"
});
</script>
请参阅Ajax/load
此外,本网站上有很多关于AJAX的讨论。我建议在AJAX上尝试一些搜索。并且,有许多方法可以实现您的目标 - 重要的是要考虑我所建议的只是一个。
答案 1 :(得分:1)
您还可以通过DOM创建脚本标记,并附加HTML
addScript = function(src) {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = src;
head.appendChild(script);
}
addScript('counter.php');
在PHP中将指令返回为Javascript。
例如:
<?php
header('content-type: text/javascript');
?>
document.getElementById('mydiv_id').innerHTML = '1';
答案 2 :(得分:1)
PrototypeJS提供了非常方便的Ajax和PeriodicalExecuter对象,可以完全按照您的要求进行操作。
在此示例中,Ajax请求每10秒执行一次。您还可以通过onchange
元素的<select>
轻松进行Ajax调用。
function increment() {
new Ajax.Request( '/content.php', {
method: 'get',
parameters: {},
onSuccess: function(response, jsonHeader) {
//If you need to do something with a response, doe it here
},
onFailure: function() {
alert('Request failed because an error ocurred.');
}
});
}
new PeridodicalExecuter(function(pe) {
//Call pe.stop() to stop the timer;
increment();
}, 10);
答案 3 :(得分:1)
您必须与服务器通信,如果您在浏览器中,则需要通过HTTP请求进行通信。称之为Ajax,HTTPRequest,页面重载,无论如何,服务器无法分辨出来。 使用Ajax / HttpRequest加载URL,不要返回任何内容。
答案 4 :(得分:0)
XMLHttpRequest确实不是那么难,但另一件事你可以使用iframe作为目标进行表单提交。
<form action="increment_counter.php" target="my-iframe"...
只是隐藏iframe,你应该没问题。从技术上讲,目标属性已弃用,但在HTML5中,所以我不会太担心。
当然,XMLHttpRequest确实不是那么糟糕,特别是如果你使用的是js lib。
UPDATE只是为了澄清,iframe的目的不是获取或使用返回,目的是使页面不会使用target属性刷新。