javascript – 如何使用Jquery AJAX调用MVC Action然后在MVC中提交表单?

前端之家收集整理的这篇文章主要介绍了javascript – 如何使用Jquery AJAX调用MVC Action然后在MVC中提交表单?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的MVC视图我有按钮:
  1. <input id="btnSave" type="submit" name="Save" value="Save" />

当我点击这个按钮我需要调用一个动作,做一些东西,然后提交我的表单.

我有这个jQuery:

  1. $('#btnSave').click(function () {
  2. $.ajax({
  3. url: "/Home/SaveDetailedInfo",type: "POST",data: JSON.stringify({ 'Options': someData}),dataType: "json",traditional: true,contentType: "application/json; charset=utf-8",success: function (data) {
  4. if (data.status == "Success") {
  5. alert("Done");
  6. } else {
  7. alert("Error occurs on the Database level!");
  8. }
  9. },error: function () {
  10. alert("An error has occured!!!");
  11. }
  12. });
  13. });

然后我想提交我的表单.在控制器我有2个操作:

  1. public ActionResult SaveDetailedInfo(Option[] Options)
  2. {
  3. return Json(new { status = "Success",message = "Success" });
  4. }
  5.  
  6. [HttpPost]
  7. public ActionResult Save()
  8. {
  9. return RedirectToAction("Index","Home");
  10. }

问题是当我在我的按钮中有type =“submit”时,我无法访问SaveDetailedInfo Action,导致ajax给我错误,但是当我删除type =“submit”时,ajax工作正常,但Save Action不执行.

请,任何想法如何执行两个操作?我以为也许在Ajax>成功尝试添加type = submit通过jquery并使用.click(),但对我来说听起来很奇怪.

解决方法

使用preventDefault()停止提交按钮的事件,并在ajax调用成功中使用submit()提交表单:
  1. $('#btnSave').click(function (e) {
  2. e.preventDefault(); // <------------------ stop default behavIoUr of button
  3. var element = this;
  4. $.ajax({
  5. url: "/Home/SaveDetailedInfo",success: function (data) {
  6. if (data.status == "Success") {
  7. alert("Done");
  8. $(element).closest("form").submit(); //<------------ submit form
  9. } else {
  10. alert("Error occurs on the Database level!");
  11. }
  12. },error: function () {
  13. alert("An error has occured!!!");
  14. }
  15. });
  16. });

猜你在找的Ajax相关文章