PHP、jQuery 和 Ajax 调用乱序

标签 php javascript jquery ajax

我正在使用 jQuery 进行 Ajax 调用...我有 x 数量的 Ajax 调用附加到 div。这些 Ajax 加载请求是由 PHP foreach 循环生成的...问题是它们渲染的顺序不正确;它们被设置在数组中...

<script type="text/javascript">
function loadPage(target, url, append)
{
    if (append == true) {
        $.get(url, function(data) { $(target).append(data) });
    }
    else {
        $(target).load(url);
    }
    return false;
}
</script>

//////----- PHP

<?php
    $this->data['sidebar']  = array('login', 'active_leagues', 'latest_forum_threads', 'latest_matches', 'sponsors');

    if (isset($sidebar[0]) && !empty($sidebar[0]))
    {
        echo '<div class="right_col">';
        foreach($sidebar as $val)
        {
            echo "<script>loadPage('.right_col', 'http://dev.banelingnest.com/sidebar/". $val ."', true)</script>";
        }
        echo '</div>';
    }

我想知道造成这种情况的原因是否是网络服务器对某些请求的响应速度比其他请求慢......除此之外,我不知道为什么会发生这种情况。您有什么想法我可以如何保持请求的顺序吗?

最佳答案

您必须在请求之前创建引用点,并将结果附加到它们:

var counter = 0;

function loadPage(target,url,append)
{
    if (append == true) {
        var id = "container_"+counter;
        $(target).append("<div id='"+id+"'></div>")
        $.get(url, function(data) { 
            $("#"+id).append(data);
        });
        counter++;
    } else {
        $(target).load(url);
    }

    return false;
}

您的引用元素将在每次 loadPage() 调用时附加到目标,因此它们将按正确的顺序排列,并且请求可以按它们将按正确顺序加载的任何顺序出现地点。

关于PHP、jQuery 和 Ajax 调用乱序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6295305/

相关文章:

php - 在 Woocommerce 编辑订单页面中显示可编辑的自定义字段值

php - 组注释不起作用

javascript - 强制导向图停止响应

匹配 smarty 语法的 javascript 模板引擎

javascript - 如何从 Ajax FormData.append 访问变量?

php - WordPress:如何按meta_value按降序顺序从wp_posts和wp_postmeta获取记录?

PHP 和 MySQL - 整个表列需要链接而不是纯文本

javascript - Codeigniter 和 jquery 自动完成

javascript - 为什么 redux 使用对象的不变性来管理应用程序的状态,而 Flux 不使用?

javascript - Rails 5 在成功发送数据后重新启用表单提交