2013-12-15 43 views
0

我在数据库中使用的代码的打击保存HTML maked与jQuery和以后使用它...如何排序应用到Ajax响应

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

所以它必须从第一个div到最后吗?
但它不是!
这是图像时HTML maked使用jQuery之前运行的每个:
http://upbaz.ir/up/2013/12/3533.png
和这个形象是从后跑(每个)代码
http://upbaz.ir/up/2013/12/3534.png
所以它不是从第一个div,然后得到别人的
如何,我必须应用这个?对于每个()从第一个div,然后从其他人到最后一个div
谢谢

+1

应当指出的是,Ajax是_asynchronous_。 – undefined

+0

你应该做一个小提琴,或者发布你的html。所以我们可以看到上下文。 – FiLeVeR10

+0

通过调用admin.php,包含在ajax响应中的内容是什么? – robbmj

回答

1

基于可以从问题中得到什么小。问题似乎是ajax响应没有按顺序返回。这是可以预料的AJAX代表异步 JavaScript和XML。

如果您需要施加某种排序的方法有很多,你可以做到这一点。然而,它看起来像在页面上对应于a div的ajax响应中包含一个数字。

请记住,问题是很模糊的,因此答案可能是不完全的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。

1

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

+0

你能举个例子吗? –

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