Php AJAX加载中的AJAX加载

Php AJAX加载中的AJAX加载,php,javascript,html,ajax,Php,Javascript,Html,Ajax,我正在使用JS AJAX加载运行的按钮。只需单击它们,然后运行javascript函数将php文件的内容加载到div中。这是必要的,因为我不能让POST表单在每次按下按钮时重新加载我的页面。在主页中加载AJAX的php文件的html部分中,我也有这些按钮。我这样做是因为我需要整个页面在某一点进行自我更新。因此,为了说明: HTML主页:包含JS AJAX请求以获取整个页面(包括按钮),并每半秒更新一次==>从包含按钮的php文件中检索整个页面。该文件包含更多AJAX请求,以使按钮能够实时响应。每

我正在使用JS AJAX加载运行的按钮。只需单击它们,然后运行javascript函数将php文件的内容加载到div中。这是必要的,因为我不能让POST表单在每次按下按钮时重新加载我的页面。在主页中加载AJAX的php文件的html部分中,我也有这些按钮。我这样做是因为我需要整个页面在某一点进行自我更新。因此,为了说明:

HTML主页:包含JS AJAX请求以获取整个页面(包括按钮),并每半秒更新一次==>从包含按钮的php文件中检索整个页面。该文件包含更多AJAX请求,以使按钮能够实时响应。每次按下一个按钮,他们就会得到另一个php文件===>另一个php文件运行后台代码

我的问题是:我的站点需要对用户的点击按钮非常敏感,而AJAX请求的分层造成了相当大的滞后。在我将所有按钮和AJAX请求都连接到主页之前,时间安排很好——没有延迟。但是(正如我前面解释的那样),我需要整个系统不断地重新加载自身,以便在PHP后台代码中的某些变量等于某个特定变量时做出反应,因此我将所有按钮移动到另一个PHP文件中,以便主页每四分之一秒请求一次AJAX。即使我每100秒请求一次,仍然有很多延迟

相关主页代码:

<script>
    function wonfunction()
    {
        $.get('wonphp.php', function(data){
        $('#won').html(data);
        });
    }
    setInterval(wonfunction, 10);
    </script>
    </head>
    <body>
    <div id="won"></div>
    <body>
    </html>

函数
{
$.get('wonphp.php',函数(数据){
$('#won').html(数据);
});
}
设置间隔(WON函数,10);
相关wonphp.php代码(页面代码包括按钮):


$('#A')。单击(函数()
{
$.get('clickA.php',函数(数据){
$('#clickdiv').html(数据);
});
});
$('#B')。单击(函数()
{
$.get('clickB.php',函数(数据){
$('#clickdiv').html(数据);
});
});
$('#C')。单击(函数()
{
$.get('clickC.php',函数(数据){
$('#clickdiv').html(数据);
});
});


好的,非常感谢您的帮助。

我认为您应该重新编写代码,以尽可能减少请求

如果需要,您可以使用
JSON
请求,通过
setInterval
进行轮询,使用客户端javascript(or)的众多优秀模板引擎之一构建生成的html

如果无法使用
JSON
,请将间隔设置为合理的数字,并使用事件触发,因为在跨浏览器环境中,它不太容易出错(您应该查看代码)

所以是这样的:

function load_won() {
    $('#won').load('wonphp.php');
}
setInterval(load_won, 5000);
load_won();

$('#A').live('click', function(event) {
    event.preventDefault();
    $('#clickdiv').load('clickA.php');
});

你真的需要每半秒钟更新一次整个页面吗?这将是造成滞后的最主要原因。AJAX请求可能需要300-400ms,然后浏览器必须呈现新内容,然后在浏览器完成后,它被要求发出另一个异步请求。如果您需要更新站点的某些部分,只获取您需要的部分,并且每500毫秒执行一次。听起来好像您正在尝试创建老虎机,我认为您的体系结构可能不适合它,也可能不适合选择技术。听起来你真的想用flash作为例子。请不要故意破坏你的问题。如果您在某些方面需要帮助,请提醒版主注意。
function poller() {
    $.getJSON('/wonphp.php?kind=json', function (data) {
        // prepare the resulting data and render the result or
        // trigger an event to another function that will check
        // if initial data has changed rendering html
    });
}
setInterval(poller, 10000); // poll every 10 seconds 
poller(); // initial load
function load_won() {
    $('#won').load('wonphp.php');
}
setInterval(load_won, 5000);
load_won();

$('#A').live('click', function(event) {
    event.preventDefault();
    $('#clickdiv').load('clickA.php');
});