JQuery修改克隆的变量(永久)



我知道关于这个主题有很多问题,但在这种特殊情况下,没有一个对我有效。

我使用ajax将div的内容作为参数发送。当我说"内容"时,我指的是html代码,它基本上是一个包含一些行和列的表。此代码随后被保存为html文件,以便生成PDF文件。

到目前为止一切都很好。我的问题是,在提交这个html代码之前,我需要更改3个图像的src值,然而,在尝试了太多选项后,这些更改从未进行过。

这是相关代码:

var exportContents = $('#theResults').find("#reportContent").clone();
//find the images which src need to be replaced
$(exportContents).find('.dynImg').each(function(i, obj) {
var saveAsName = new Date().valueOf() + ".png";
saveAsName = "../tmpFiles/" + saveAsName;
$( "input[name=elReporte]" ).val($(this).attr("src"));
$( "input[name=theFileName]" ).val(saveAsName);
var currentId = $(this).attr("id");
theImgData = $("#justForPDFs").serialize();
$.ajax({
url: '../SaveImgServlet',
type: 'GET',
data: theImgData,
success: function(data){
$(exportContents).find("#" + currentId).attr("src", saveAsName);
console.log($(exportContents).find("#" + currentId).attr("src"));
},
error: function (request, status, error) {
alert(request.responseText);
}
});

在这些行中,我正在更改所需的值,console.log显示了正确的值:

$(exportContents).find("#" + currentId).attr("src", saveAsName);
alert($(exportContents).find("#" + currentId).attr("src"));

然而,当我提交变量"exportContents"时(在所有这些之后(,这些更改都不存在,这3个图像的src都保持不变,即使console.log另有说明。看起来"exportContents"变量保持不变。有没有其他方法可以修改这个变量(永远(?

顺便说一句,虽然这与我的问题无关,但ajax调用所做的是将图像urls/names(因为它们是动态生成的,不"存在"(提交给servlet,servlet将创建一个实际的图像并保存它。所有这些都很好

最后,在所有这些之后,变量"exportContents"被提交如下:

$( "input[name=elReporte]" ).val(exportContents.html());
theData = $("#justForPDFs").serialize();
$.ajax({
.
.//it does more stuff
.
.

任何帮助都将不胜感激。

在ajax请求中尝试async:false

$.ajax({
url: '../SaveImgServlet',
type: 'GET',
async: false,
data: theImgData,
success: function(data){
$(exportContents).find("#" + currentId).attr("src", saveAsName);
console.log($(exportContents).find("#" + currentId).attr("src"));
},
error: function (request, status, error) {
alert(request.responseText);
}
});

这将强制在发送另一个请求之前完成一个ajax请求(因为这一切都发生在一个循环中(。

希望这会有所帮助。

最新更新