如何从每个循环完成一个数组,然后在带有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");
}
});
});
答案 0 :(得分: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);
});