我试图在不重新加载整个页面的情况下提交表单。我非常有信心,因为我使用事件监听器来规避默认的表单提交逻辑,所以我有逻辑工作。
$("body").on("click", '#buttonHolder', function() {
$.ajax({
type: 'POST',
data: $('#storeCart').serialize(),
dataType: "html",
url: "/inc/store/cart/cart-contents.jsp",
cache: false,
success: function(response) {
$("#formHolder").html(response);
}
});
return false;
});
我的dsp表单看起来像这样
<dsp:form action="" id="storeCart" formid="storeCart" method="post">
<dsp:droplet name="/atg/dynamo/droplet/IsEmpty">
<dsp:param name="value" param="element.WarrantyId"/>
<dsp:oparam name="true">
<input type="text" value='<dsp:valueof param="element.quantity" />' maxlength="3" class="inputQuantity" name='<dsp:valueof param="element.catalogRefId"/>' id='quantity-<dsp:valueof param="element.catalogRefId"/>'/>
</dsp:oparam>
<dsp:oparam name="false">
<dsp:valueof param="element.quantity" />
<input type="hidden" value='<dsp:valueof param="element.quantity" />' maxlength="3" class="inputQuantity" name='<dsp:valueof param="element.catalogRefId"/>' id='quantity-<dsp:valueof param="element.catalogRefId"/>'/>
</dsp:oparam>
</dsp:droplet>
<td id="buttonHolder"><dsp:input value="Submit" type="submit" bean="......"/></td>
</dps:form>
问题是我在前端添加值后似乎不想更改值。更清楚:
输入字段为值1.如果我继续将其更改为4,则检查元素,该值仍为1,这将在表单提交并生成响应时反映出来。所以做一个console.log($('testID')。val());在输入上给我1,而不是4(所需)。这也在请求标题中进行。
编辑:
我更新了dsp表单部分,以更准确地反映具有阴影隐藏字段的字段。我似乎无法获得接受新输入的表单。即使将新值注入chrome检查器,这些值也会将其自身声明为存储在jsp变量中的值。
答案 0 :(得分:0)
每个输入字段都有一个相应的隐藏表单元素,由ATG在内部由DSP标记创建。您是否设置了相关的隐藏字段(如下面的firstname文本字段有一个以_D开头的相应隐藏字段:/atg..etc。,)
隐藏值必须设置为服务器正在发送的内容,因为您在更新文本字段时没有重新加载页面。
<input id=“testid” class=“teststyle " type=“text” value="" name="/atg/something/SomeFormHandler.value.firstname” maxlength="60">
<input type="hidden" value=" " name="_D:/atg/something/SomeFormHandler.value.firstname>
答案 1 :(得分:0)
上面的代码在使用ATG dsp标签时似乎不一致。
尝试使用<dsp:input>
标记而不是html <input>
标记。这将确保在您提交表单时字段被适当地映射到ATG FormHandler,例如
<dsp:input bean='YourFormHandler.value.quantity' name='<dsp:valueof param="element.catalogRefId"/>' id='quantity-<dsp:valueof param="element.catalogRefId"/>' type="hidden" iclass="inputQuantity" value='<dsp:valueof param="element.quantity" />' maxlength="3" />