我正在尝试使用jquery.Ajax将数据发布到返回JsonResult的ASP.NET MVC2操作方法。一切都很好,除非响应返回到浏览器,它被视为文件下载而不是传递给成功处理程序。这是我的代码:
使用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返回?
答案 0 :(得分:2)
您在提交事件的处理程序中缺少“return 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>
你几乎那里!
答案 1 :(得分:0)
我刚刚开始使用类似于此的ajax,并且查看代码的第一印象会表明您不需要在表单上调用submit?您只需要执行ajax调用。我可能错了,但可能是ajax正在返回数据并且页面正在进行刷新,其中页面数据被json数据替换?