如何对ajax响应应用排序

时间:2013-12-15 11:48:33

标签: jquery html ajax each

我使用代码打击保存html与数据库中的jquery一起使用并稍后使用...

$('div[read]').each(function(){
    var kelas = $(this).attr('kelas');
    $.post('admin.php',{kelas:kelas,id:id},function(sss){
        alert(sss);
    });
});

所以它必须从第一个div到最后一个权利? 但它不是!
这是html在运行每个之前用jquery制作的图像:
http://upbaz.ir/up/2013/12/3533.png
并且此图像来自运行后(每个)代码
http://upbaz.ir/up/2013/12/3534.png
所以它不是从第一个div而是从其他人那里得到的 我该如何申请? for each()从第一个div获得,然后从其他div到最后一个div 谢谢

3 个答案:

答案 0 :(得分:1)

post()jquery函数是异步的。您应该将所有$('div [read]')对象发送到admin.php并在回显之前将结果排序。

答案 1 :(得分:1)

基于从问题中得出的很少。问题似乎是ajax响应没有按顺序返回。这是预期的AJAX代表异步 JavaScript和XML。

如果您需要强加一些订购,您可以通过多种方式进行订购。但是,看起来ajax响应中包含的数字对应于页面上的div。

请记住,问题非常模糊,因此答案可能不是OP想要的。

<强> For a Demonstration check out the Fiddle

jQuery(document).ready(function ($) {

    var divs = $('div[read]');

    $(divs).each(function () {

        var kelas = $(this).attr('kelas'),
            id = $(this).attr("read");

        postSimulator('admin.php', {
            kelas: kelas,
            id: id
        }, process(this));
    });

    function process(div) {

        return function (data) {
            // based on the pictures in the question I assume the 
            // a number is returned
            var ord = data.id;
            $(div).append(ord);
        };

    }

    function postSimulator(str, obj, cbFtn) {
        var timeToWait = parseInt( Math.random() * 10000);
        setTimeout(function () {
            cbFtn(obj);
        }, timeToWait);
    }
});

使这项工作的诀窍在于process功能。从函数返回的是一个关闭div的函数,当收到ajax响应时,postSimulator调用它并将响应应用于正确的div。

答案 2 :(得分:0)

我解决了...
是的帖子是异步的...
所以我用以下代码发布一次:

var id = ss;
        var kelas = new Array();
        $('div[read]').each(function(){   
            kelas.push($(this).attr('kelas'));

        })
        $.post('admin.php',{id:id,kelas:kelas},function(){
            alert('DONE');
        })