Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 表单中的表单和JSON调用_Asp.net_Json_Forms_Jquery - Fatal编程技术网

Asp.net 表单中的表单和JSON调用

Asp.net 表单中的表单和JSON调用,asp.net,json,forms,jquery,Asp.net,Json,Forms,Jquery,在我的页面中,我有一个表单: <form method="post" id="confirm-order-form" name="confirm-order-form"> 在表单中,我编写了一些脚本来进行JSON调用: <script type="text/javascript"><xsl:text disable-output-escaping="yes"><![CDATA[ $(function() { $('#s

在我的页面中,我有一个表单:

   <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)在具有
runat=“server”
属性的表单外部添加
div

<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');
$('#target')。追加('');
//添加你的控件。。。
美元邮政(
“你的行动”,
$('#newform')。序列化(),
函数(结果){
//处理结果。。。
}, 
“json”);

3) 对服务器窗体执行任何需要执行的操作…

$($form)
$form
将意味着它已经是一个jQuery对象,那么为什么还要在它上面使用jQuery包装器呢?重定向在哪里?您可能需要将其放入成功回调中,并且当前将其作为
getJSON
之后的下一条语句,在这种情况下,重定向将立即发生。getJSON是async@BLSully:我正在使用xslt在代码中重定向此url。或者更可能的是,这个脚本在一个表单中()这个表单会发回,表单中的代码会重定向页面你不能在其他表单中使用表单,据我所知,表单不支持嵌套,但你可以使用两个并行表单,同时发布嵌入表单在任何W3C草案中都无效;如果您真的需要第二个表单,请将其附加到页面中“主”表单之外的其他表单中。注意:我知道这会起作用,但这不是我问题的正确解决方案,我需要处理这两个表单。因为我的第一个表单中有其他控件。您需要同时提交第一个表单和ajax表单?我需要先提交ajax表单,然后再提交普通表单。我认为这将解决问题。如果有任何其他建议,请指导我。除了我必须单击两次提交按钮外,其他一切都很好。在第一次单击我的子窗体时效果很好,在第二次单击父窗体时效果很好。我不知道发生了什么。请您指导我。@AthulkSurendran不,我不确定为什么会这样。。您可以创建一个JSFIDLE示例吗?