2013-12-15 46 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'); 
     })