在.each()循环中多次提交表单,只有最后一次提交发送

时间:2011-06-16 17:51:36

标签: php javascript jquery forms

我正在尝试提交表单,然后更新一些值并再次提交。但是,当我这样做时,只提交了LAST版本。我为Unsafe Javascript attempt to access frame with URL domain2.com from frame with URL domain1 . Domains, Protocols and Ports must match.

收到一个错误

表单代码:

<form id="hiddenform" method="post" enctype="multipart/form-data" action="http://www.actonsoftware.com/acton/forms/userSubmit.jsp" accept-charset="UTF-8" target="tintest">

目标是隐藏的iframe id="tintest"

这是我的代码:

var tbody = $("#vmMainPage table:first tbody");
    var lng = tbody[0].rows.length - 1;
    var mnstr = "items: ";
    $("#vmMainPage table:first tbody tr").each(function(i){ 
        if ((i>0) && (i<(lng-3))) {
            item = $(this).children("td").children("a").children("strong").html();
            // quantity = "
            console.log(item);
            $("#hiddenform input#fld_0").val(item);
            var $tsta = "";
            for ( j=2; j<6; j++)
            {
                $tst = $("table:eq(2) tr:eq("+j+") td:eq(1)").html();
                $tsta = $tsta + $tst +", ";
            }
            $email = $("table:eq(2) tr:eq(6) td:eq(1)").html();
            $("#hiddenform input#fld_2").val($email+"_"+i);
            $("#hiddenform input#fld_1").val($tsta);
            $("#hiddenform").submit();
        }
    });

1 个答案:

答案 0 :(得分:0)

为了确保您的请求不会相互干扰,您可以为每个请求创建一个iframe并将其作为目标。

这可以通过DOM完成     var cnt = 0;

var ifr = document.createElement("iframe");
ifr.name="ifr"+(cnt++);
ifr.style.display="none"
document.getElementById("iframeContainer").appendChild(ifr);
document.forms[0].target=ifr.name;
document.forms[0].submit()

或jQuery

cnt++
$("#iframeContainer").append('<iframe src="about:blank" name="ifr'+cnt+'"></iframe>');
$("#hiddenform").attr("target","ifr"+cnt);
$("#hiddenform").submit();