JsonResult在浏览器中显示一个文件下载
我试图使用jquery.Ajax将数据发布到返回JsonResult的ASP.NET MVC2操作方法。除非响应返回到浏览器,否则它会被视为文件下载,而不是传递到成功处理程序。这里是我的代码:JsonResult在浏览器中显示一个文件下载
的Javascript:在控制器
<script type="text/javascript">
$(document).ready(function() {
$("form[action$='CreateEnvelope']").submit(function() {
$.ajax({
url: $(this).attr("action"),
type: "POST",
data: $(this).serialize(),
dataType: "json",
success: function (envelopeData) {
alert("test");
}
});
});
return false;
});
</script>
操作方法:
public JsonResult CreateEnvelope(string envelopeTitle, string envelopeDescription)
{
//create an envelope object and return
return Json(envelope);
}
如果我打开下载的文件的JSON正是我要找的和MIME类型显示为application/json。我错过了什么让jquery.ajax调用接收json返回?
您在提交事件的处理程序中缺少“返回false”。如果你不返回false,那么JQuery仍然会像通常那样通过提交。
<script type="text/javascript">
$(document).ready(function() {
$("form[action$='CreateEnvelope']").submit(function() {
$.ajax({
url: $(this).attr("action"),
type: "POST",
data: $(this).serialize(),
dataType: "json",
success: function (envelopeData) {
alert("test");
}
});
// IMPORTANT: return false to make sure the normal post doesn't happen!
return false;
});
return false;
});
</script>
你是几乎有!
我刚刚开始使用类似于此的ajax,并且看着您的代码的第一印象会表明您不需要在窗体上调用提交?你只需要做ajax调用。我可能是错的,但它可能是ajax返回的数据和页面正在刷新页面数据被替换为json数据?
我正在处理提交事件,作为触发表单的ajax调用的一种方法,如果用户禁用javascript,可以正常发布。 – joshb 2010-04-03 15:37:05
@josh:很好的电话! – 2010-04-03 15:57:53
谢谢!首先,这是我的意图,只是把它放在了错误的地方。 – joshb 2010-04-03 15:59:08