PHP,jQuery和Ajax调用乱序

Lee*_*Lee 2 javascript php ajax jquery

我正在使用jQuery进行Ajax调用...我有一些附加到div的Ajax调用.这些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>
Run Code Online (Sandbox Code Playgroud)

////// ----- 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>';
    }
Run Code Online (Sandbox Code Playgroud)

我很想知道这是因为Web服务器对某些请求的响应速度比其他人慢...除此之外,我不知道为什么会发生这种情况.您有什么想法我可以按顺序保留请求吗?

aor*_*sik 6

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

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;
}
Run Code Online (Sandbox Code Playgroud)

您的参考元素将在每次loadPage()调用时附加到目标,因此它们将按照正确的顺序排列,并且请求可以按任意顺序排列,它们将在正确的位置加载.