ajax post表单使页面重定向

时间:2016-01-21 17:08:43

标签: javascript jquery json ajax

我有一个输入类型=“文件”,并且在更改输入时我想要提交表单。

$(document).on("change", "#image-upload", function (e) {
   $.ajax({
       url: '/BlogPost/UploadHomeReport',
       type: 'POST',
       data: $('#upload-image-form').serialize(),
       success: function (response) {
           console.log(response);
       }
    });
}); 
<form action="~/BlogPost/UploadHomeReport" method="post" enctype="multipart/form-data" id="upload-image-form">
    <input type="file" id="image-upload" name="file" />
    <input type="text" name="destinationId" id="destinationId" />
</form>
[HttpPost]
public JsonResult UploadHomeReport(HttpPostedFileBase file, int destinationId)
{
    var fileName = Path.GetFileName(file.FileName);
    file.SaveAs(Server.MapPath("~/App_Data/UploadedImages/" + destinationId + fileName));
    var path = Server.MapPath("~/App_Data/UploadedImages/" + destinationId + fileName);
    return Json(path);
}

一切都很完美,但是当它返回JSON时,它会重定向到一个新页面。为什么不返回JSON而不是重定向?

2 个答案:

答案 0 :(得分:0)

听起来你的代码中还有其他问题。由于这是一个更改侦听器,因此不会自动提交。其他因素导致重定向发生。你需要粘贴你正在获得的响应(302?)并从那里调试。

此外,删除表单标记中的操作以查看它是否仍在提交,但如果您的应用程序可以在没有javascript的情况下运行,则最好提供后备。

答案 1 :(得分:-1)

默认情况下,您的表单操作正在执行。您需要使用e.preventDefault();

停止提交表单

当更改事件发生时,下一个方法将保持并处理。

从URL路径我想假设这是ASP.NET(可能),然后表单操作处理将进行回发。