【发布时间】:2015-11-26 18:24:45
【问题描述】:
我有一个加载文档主要部分的 html 表单,后加载 ajax 请求并获取一个 xml 文件,该文件被解析以创建可以更新/提交的“子”表单。这是“预加载”的形式
<html>
<head>
<script src="jquery.js">
<script src="jquery.forms.js">
<script>
$(document).ready(function () {
//Script to execute when form is loaded
loadOrder(unid);
});
</script>
</head>
<body>
<form id="mainform" name="main" method="post" action="whatever">
<input type="hidden" id="unid" name="unid" value="123" />
</form>
<div id="orderForms">
</div>
</body>
</html>
这是加载后的表单:
<html>...
<div id="orderForms">
<form id="order_1" name="order" method="post" action="whatever">
<input type="hidden" id="pid_1" name="pid" value="123" />
<input type="hidden" id="unid_1" name="unid" value="456" />
</form>
<form id="order_2" name="order" method="post" action="whatever">
<input type="hidden" id="pid_2" name="pid" value="123" />
<input type="hidden" id="unid_2" name="unid" value="789" />
</form>
</div>
</body>
</html>
JS代码:
function loadOrders(unid){
var rUrl = "url";
$.ajax({type: "GET", url: rUrl, async: true, cache: false, dataType: "xml", success: postLoadOrders}) ;
}
function postLoadOrders(xml){
nxtOrder = 1;
var html="";
$('order',xml).each(function() {
// parses the xml and generates the html to be inserted into the <div>
});
$("#orderForms").html(html);
}
这一切正常,主窗体加载,<div> 中的“隐藏”窗体被写入。当我在主窗体上放置一个按钮时,就会出现问题......
function submitOrder(){
$("#pid_1").val('555');
$("#order_1").formSerialize();
$("#order_1").ajaxSubmit();
}
如果我在 .val('555') 之前提醒($("#pid_1").val()) 它会显示原始值,当我在之后提醒时,它会显示新值,但是它会提交原始值,如果我在 firebug 中打开 html,则该值不会显示为更改。
如果我在主表单中放置一个隐藏字段,当文档加载并更改其值时,该隐藏字段不仅会发布新值,而且在检查源时也会显示为已更改。
有什么想法吗?
【问题讨论】:
-
格式化你的代码,这很难读。并且只包括相关部分。
-
您的
dataType: xml"应该是dataType: "xml"。 -
dataType 上缺少的 ":"xml" 是错误的复制/粘贴。
标签: javascript jquery html