2013-05-12 8 views
0

Как массив выполняется из каждого цикла, а затем передает его в сообщении с помощью ajax? Теперь он просто создает один массив для каждого элемента и не отправляет ничего в ajax.Создайте массив из каждого цикла

$('a#export').on('click',function(){ 

    $('[id^="imgHolder"], [id^="textHolder"]').each(function(){ 

     TextElementID = $(this,'[id^="textHolder"]').attr('id'); 
     TextElementContent = $(this,'[id^="textHolder"]').text(); 

    TextObjects = new Array(TextElementID, TextElementContent); 

     ImgSrc = $('img',this,'[id^="imgHolder"]').attr('src'); 
     ImgHolderID = $(this,'[id^="imgHolder"]').attr('id'); 
     ImgHolderClass = $(this,'[id^="imgHolder"]').attr('class');    

    ImgObjects = new Array(ImgHolderID, ImgHolderClass, ImgSrc); 

     }); 

     $.ajax({ 
      url: "post.php", 
      type: "post", 
      data: { 
       ExportObjects: ImgObjects 
      }, 
      success: function(){ 
       alert("success"); 
      }, 
      error: function(){ 
       alert("failure"); 
      } 
       }); 

    }); 

ответ

1

Есть пара проблем с этим. Вы инициализируете массив в каждом и в конечном итоге перезаписываете значения. Также вы делаете каждый текст, а изображения собирают значения как текста, так и изображений в цикле и получат дубликаты. Вот рабочая версия fiddle.

var ImgObjects = new Array(); 
$('[id^="imgHolder"]').each(function(){ 
    ImgSrc = $('img',this,'[id^="imgHolder"]').attr('src'); 
    ImgHolderID = $(this,'[id^="imgHolder"]').attr('id'); 
    ImgHolderClass = $(this,'[id^="imgHolder"]').attr('class');    
ImgObjects.push(ImgHolderID, ImgHolderClass, ImgSrc); 
    }); 

var TextObjects = new Array(); 
$('[id^="textHolder"]').each(function(){ 
    TextElementID = $(this,'[id^="textHolder"]').attr('id'); 
    TextElementContent = $(this,'[id^="textHolder"]').text(); 
    TextObjects.push(TextElementID); 
    TextObjects.push(TextElementContent); 
}); 
+0

Большое спасибо! Работала именно так, как я надеюсь! + для вас! – Kim

Смежные вопросы