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

    });
4

1 回答 1

1

这有几个问题。您正在初始化 each 中的数组,最终将覆盖这些值。此外,您正在对文本和图像执行 each,正在循环中收集文本和图像的值,最终会出现重复项。这是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);
});
于 2013-05-12T20:00:24.777 回答