如果textarea的格式也没有格式嵌套问题,则Ajax调用

| 我正在使用的系统是CMS,您在其中插入诸如联系表单模板之类的模板并将其保存到数据库。该模板针对服务器端进行编码以处理数据。 现在我的\“ contentDiv \”在表单中插入并保存了所有模板的表单中,而不是在页面中显示的表单标签中
@using (Html.BeginForm(\"Edit\", \"Home\", FormMethod.Post, new { id = \"first\" }))
{
    @Html.Hidden(\"someId\", @Model.PageId)

}

<div id=\"contentDiv\"  style=\"width:100%\">@Html.Raw(Model.Html)</div>
以上表格另存为
$(function () {
    $(\"form#first\").submit(function (e) {
        e.preventDefault();

        var viewmodel = {
            Id: $(\"#someId\").val(),
            Html: $(\"#contentDiv\").val()
        };

        $.ajax({
            url: $(this).attr(\"action\"),
            type: \"POST\",
            data: JSON.stringify(viewmodel),
            dataType: \"json\",
            contentType: \"application/json; charset=utf-8\",
            beforeSend: function () { $(\"#status\").fadeIn(); },
            complete: function () { $(\"#status\").fadeOut(); },
            success: function (data) {
                var message = data.Message;

            },
            error: function () {

            }
        });
    });
});
请注意,我将\“ contentDiv移出了表单标签,因为包裹在表单标签中的联系表单无法嵌套在id = first表单中。 有解决方案来套用表格吗? 。如果不是 我的另一个问题是 contentDiv不会被包装在表单标签中,这意味着如果客户端浏览器禁用了javascript,则他将无法将contentDiv数据发布到服务器,并且表单将毫无用处。 该怎么办? 如果我不将contentDiv移出表单标签,而不是在插入模板后移出,则结构将是表单的嵌套
@using (Html.BeginForm(\"Edit\", \"Home\", FormMethod.Post, new { id = \"first\" }))
    {
<form id=\"contactform\" action=\"/Home/Email\"  method=\"post\" >                
    <div class=\"clear\" style=\"padding-bottom:10px;\"></div>

    <div class=\"formCaption\">Full Name</div>
    <div class=\"formField\"><input id=\"fullName\" name=\"fullName\" class=\"standardField\" /></div>




    <div><input id=\"sendBtn\" value=\"Send\" type=\"button\" /></div>
</form> 
}
    
已邀请:
        从您的描述中我不明白为什么html需要在表格之外。同样,您不应该对div使用
.val()
方法。您应该使用
.html()
var viewmodel = {
    Id: $(\"#someId\").val(),
    Html: $(\"#contentDiv\").html()
};
当然,因为如果客户端浏览器禁用了javascript,则您正在使用javascript来获取主要表单之外的html,因此该表单将毫无用处。仅当您将html移到主窗体中时,才能在没有javascript的情况下使用:
@using (Html.BeginForm(\"Edit\", \"Home\", FormMethod.Post, new { id = \"first\" }))
{
    @Html.HiddenFor(x => x.PageId)
    @Html.HiddenFor(x => x.Html)
    <input type=\"submit\" value=\"Edit\" />
}

<!-- 
You could still keep the div for preview or something but don\'t make 
any use of it when submitting.
-->
<div id=\"contentDiv\" style=\"width:100%\">
    @Html.Raw(Model.Html)
</div>
    

要回复问题请先登录注册