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

JQuery修改克隆的变量(永久),jquery,servlets,Jquery,Servlets,我知道关于这个问题有很多问题,但是,在这个特殊的案例中,没有一个对我有效 我使用ajax将div的内容作为参数发送。当我说“内容”时,我指的是html代码,它基本上是一个包含一些行和列的表。该代码随后保存为html文件,以便生成PDF文件 到目前为止一切正常。我的问题是,在提交此html代码之前,我需要更改3个图像的src值,但是,在尝试了太多选项之后,这些更改永远不会进行 以下是相关代码: var exportContents = $('#theResults').find("

我知道关于这个问题有很多问题,但是,在这个特殊的案例中,没有一个对我有效

我使用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”(在此之后)时,这些更改并不存在,即使console.log中另有说明,这3个图像的src仍然保持不变。“exportContents”变量似乎保持不变。是否有其他方法修改此变量(永久)

顺便说一句,虽然这与我的问题无关,但是ajax调用所做的是将图像URL/名称(因为它们是动态生成的,不“存在”)提交给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请求之前完成一个ajax请求(因为这都是在一个循环中发生的)


希望这会有所帮助。

尝试在ajax请求中放入
async:false
。循环中的异步调用通常会出错。尝试在发送otherWOW之前等待单个请求完成!!谢谢!!!!,这真的成功了!!。你能把你的评论作为答案贴出来,这样我就可以把它标记为正确答案了吗?很高兴它有帮助,贴出了答案:)