【问题标题】:Asp.Net MVC 4, Form submit not workingAsp.Net MVC 4,表单提交不起作用
【发布时间】:2015-10-19 09:48:46
【问题描述】:

我有一个简单的 Asp.Net MVC 4 Chat 应用程序。 在初始化聊天会话下方,我要求用户输入姓名,一旦用户输入他的姓名(以及下面代码中未显示的其他详细信息)并按下 "Start Chat" 按钮,就会调用 Action 方法 ChatForm Chat 控制器。

聊天表单的代码sn-p如下所示:

@model WebSite.ViewModel.SimpleForm

using (Html.BeginForm("ChatForm", "Chat", FormMethod.Post, new { id = "anonymousChat" }))
{
<div class='form-group'>
    @Html.LabelRequiredFor(m => m.Name)
    @Html.TextBoxFor(m => m.Name, new { @class = "form-control" })
</div>
<input type="submit" class='btn btn-block start-anonymous-chat' value="Start Chat" />
}

ChatForm方法如下图:

public ActionResult ChatForm(SimpleForm model)
{
      /*Some processing is done here and finally the below values are returned*/

      return Json(new { success = true, chatId=chatRequest.Id, compId=company.Id });
}

现在的问题是在执行这个函数之后,我在浏览器上看到下面一行:

{"success":true,"chatId":10734,"compId":109}

点击提交按钮时执行的方法是:

$("#anonymousChat").submit(function () {
            debugger;
            if ($("#anonymousChat").valid())
                $.ajax({
                    type: this.method,
                    url: this.action,
                    data: $(this).serialize(),
                    success: function (data) {

                        if (data.success) {
                            /*show the chat modal*/
                            chatModal.modal("show");

                        }
                        else {
                            console.log("failed");
                            $("#anon-chat-form").html(data);
                        }
                    }
                });

            return false;
        });

此外,如果我尝试将任何警报消息或控制台消息放入方法 $("#anonymousChat").submit 中,则不会弹出更改,也不会弹出控制台消息或打印。

以前有没有人遇到过类似的问题?那你是怎么解决的?

提前致谢。

【问题讨论】:

  • 很明显你的电话没有进入success方法。通过添加错误方法更新 ajax 调用,然后您可以捕获错误
  • @Optimus: 错误方法??
  • 查看此链接,它显示了如何跟踪 ajax 错误..stackoverflow.com/questions/2833951/…
  • @Optimus,(过时的)Ajax.BeginForm() 方法与 pure MVC 有什么关系?
  • 尝试使用此功能代替您的提交$(document).on('submit', '#anonymousChat', function (e) {});

标签: jquery asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

警报未显示,因此未触发提交事件。

如果您的表单是动态添加到 DOM 的,那么 $("#anonymousChat").submit(function () {} 将不会触发任何事情,因为在页面加载时表单还不存在。 尝试像这样更改您的代码以避免此问题:

$(document).on('submit', '#anonymousChat', function (e) {
  debugger;
        if ($("#anonymousChat").valid())
            $.ajax({
                type: this.method,
                url: this.action,
                data: $(this).serialize(),
                success: function (data) {

                    if (data.success) {
                        /*show the chat modal*/
                        chatModal.modal("show");

                    }
                    else {
                        console.log("failed");
                        $("#anon-chat-form").html(data);
                    }
                }
            });

        return false;
});

如果它仍然不起作用,也许你的问题比这简单得多,也许你只是没有引用 javascript 文件。

【讨论】:

    【解决方案2】:

    您的表单 ID 是“myChat”,但是您在 JavaScript 中引用了“anonymousChat”,相信这可能会导致您的问题

    【讨论】:

      猜你喜欢
      • 2012-02-22
      • 2020-02-21
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 2020-10-21
      • 2012-05-10
      • 2015-04-20
      • 2013-05-05
      相关资源
      最近更新 更多