$("#frmCompose").submit(function () {
$(this).ajaxSubmit({
success: function (response) {
alert('success');
}
});
});
控制器代码:
[HttpPost]
public ActionResult SendEmail(EmailMessageModel emailMessage)
{
try
{
// do something with the data
return Json(new StatusModel { error = false });
}
catch (Exception)
{
return Json(new StatusModel { error = true, message = "Could not send email" });
}
}
查看代码:
<form id="frmCompose" method="post" action="SendEmail">
<button id="compose" class="btn-pencil">
Send</button>
<div class="fields-inline">
<div class="editor-label">
@Html.Label("To:")
</div>
@Html.TextBox("txtTo")
</div>
<div class="fields-inline">
<div class="editor-label">
@Html.Label("Subject:")
</div>
@Html.TextBox("txtSubject")
</div>
<div class="fields-inline">
<div class="editor-label">
@Html.Label("Body:")
</div>
@Html.TextArea("txtBody")
</div>
</form>
在我的控制器中,我返回带有文本消息的JSon结果。 为什么FireFox中的视图想要将json下载为文件下载?
我想做的就是确保我在成功回调
中得到回应答案 0 :(得分:3)
解决方案是在表单的submit()调用函数中返回false。
这样,json结果将在submit函数中使用,而不会传递给浏览器进行处理。
$("#frmCompose").submit(function () {
// submit data to server here....
return false;
});
答案 1 :(得分:0)
由于无法上传 使用浏览器的文件 XMLHttpRequest对象,Form Plugin 使用隐藏的iframe元素来提供帮助 有了这个任务。这是常见的 技术,但它有固有的 限制。 iframe元素是 用作表格的目标 提交操作意味着 服务器响应写入 iframe中。如果回复,这很好 type是HTML或XML,但不起作用 如果响应类型是脚本也是如此 或JSON,两者都经常包含 需要重复的字符 找到时使用实体引用 HTML标记。
应对挑战 脚本和JSON响应,表单 插件允许这些响应 嵌入textarea元素和它 建议你这样做 这些响应类型在使用时 与文件上传相结合。
这基本上意味着如果你想使用jquery表单插件上传文件,而你的表单包含文件输入字段,服务器需要将返回的JSON包装到<textarea>
标签中。