我有一个简单的Asp.Net MVC 4聊天应用程序。
在聊天会话下面初始化,我要求用户输入名称,一旦用户输入他的名字(以及下面代码中未显示的其他详细信息)并按下"Start Chat"
按钮,操作方法{{1}从ChatForm
控制器调用。
聊天表单的代码段如下所示:
Chat
@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;
});
中放置任何警报消息或控制台消息,则不会弹出更改,也不会显示控制台消息或正在打印。
之前有没有人受到类似问题的打击?你是怎么解决的?
提前致谢。
答案 0 :(得分: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;
});
如果stil不起作用,也许你的问题比这简单得多,也许你只是没有引用javascript文件。
答案 1 :(得分:0)
您的表单ID是&#34; myChat&#34;但是你引用了#34; anonymousChat&#34;在您的JavaScript中,相信这可能会导致您的问题