Asp.net
表單中的表單和 JSON 呼叫
在我的頁面中,我有一個表格:
<form method="post" id="confirm-order-form" name="confirm-order-form">在表單中,我編寫了一些腳本來進行 JSON 呼叫:
<script type="text/javascript"><xsl:text disable-output-escaping="yes"><![CDATA[ $(function() { $('#submit').click(function() { if ($('#nlapproved').attr('checked')) { newsletter(); } }); function newsletter() { $form = $('<form action="http://mydomain.createsend.com/t/j/s/jtes/" method="post" id="subForm" />'); $form.append('<input type="hidden" name="cm-name" id="hidName" />'); $form.append('<input type="hidden" name="cm-jtes-jtes" id="hidEmail" />'); $form.append('<input type="hidden" name="cm-fo-pikty" id="hidPrivateBusiness" />'); $form .find("#hidName") .val(']]></xsl:text><xsl:value-of select="$context//checkoutinformation/info[key='name']/value" disable-output-escaping="yes"/><xsl:text disable-output-escaping="yes"><![CDATA['); $form .find("#hidEmail") .val(']]></xsl:text><xsl:value-of select="$context//checkoutinformation/info[key='email']/value" disable-output-escaping="yes"/><xsl:text disable-output-escaping="yes"><![CDATA['); $form .find("#hidPrivateBusiness") .val(']]></xsl:text><xsl:value-of select="$acctype"/><xsl:text disable-output-escaping="yes"><![CDATA['); $.getJSON( $($form).get(0).action + "?callback=?", $($form).serialize(), function (data) { if (data.Status === 400) { alert("Error: " + data.Message); } else { // 200 alert("Success: " + data.Message); } } ); } }); ]]> </xsl:text> </script>我的問題是,當外部形式存在時,這個東西不起作用——否則程式碼可以正常工作。注意:我正在將此頁面重定向到外部表單後面的另一個物理伺服器,並且在我的第一個表單中有很多其他控制項,所以我不能簡單地避免這種情況。任何人都可以幫忙嗎?
正在送出實際表格。停下:
$("#confirm-order-form").on('submit', function (e) { e.preventDefault(); });編輯:送出ajax,然後是正常形式:
...ajax.done(function () { $("#confirm-order-form").off('submit').trigger('submit'); });ajax成功完成後,解除對錶單送出的阻止,觸發一次送出。
1)在具有該屬性
div的表單之外添加一個。runat="server"<form runat="server"> <!-- stuff here --> </form> <div id="target"></div>2)編寫你的jQuery選擇器來定位那個div。
$('#target').append('<form id="newform"></form>'); // add your controls... $.post( 'your_action', $('#newform').serialize(), function(result){ // handle result... }, 'json');3)對伺服器表單做任何你需要做的事情……