【问题标题】:How to apply an ordering to ajax responses如何将排序应用于 ajax 响应
【发布时间】:2014-01-02 20:28:57
【问题描述】:

我使用代码打击将用 jquery 制作的 html 保存在数据库中,并在以后使用它......

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

所以它必须从第一个 div 到最后一个吗?
但事实并非如此!
这是在运行之前使用 jquery 制作 html 时的图像:
http://upbaz.ir/up/2013/12/3533.png
这张图片来自运行后(每个)代码
http://upbaz.ir/up/2013/12/3534.png
所以它不是从第一个 div 再从其他 div 获取的
我必须如何应用这个? for each() 从第一个 div 获取,然后从其他 div 获取到最后一个 div
谢谢你

【问题讨论】:

  • 需要注意的是Ajax是异步的
  • 你应该做一个小提琴,或者发布你的html。所以我们可以看到上下文。
  • 调用 admin.php 的 ajax 响应中包含什么?

标签: jquery html ajax each


【解决方案1】:

基于可以从问题中得出的一点点。问题似乎是没有按顺序返回ajax响应。这是意料之中的 AJAX 代表 Asynchronous 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】:

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

    【讨论】:

    • 你能举个例子吗?
    【解决方案3】:

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

    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');
            })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-16
      • 2014-05-24
      • 2019-02-19
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      相关资源
      最近更新 更多