如何在javascript/jquery中获取表单提交事件的响应?

如何在javascript/jquery中获取表单提交事件的响应?,jquery,asp.net-mvc-4,response,form-submit,Jquery,Asp.net Mvc 4,Response,Form Submit,我想用jquery或javascript获取表单提交事件的响应 我正在触发表单的提交事件,类似于jquery中的事件:- $(form).submit(); 实际上,为了检查响应,我是这样做的:- alert('resp=' + $(form).submit()); 以下是行动方法:- public ActionResult SaveProduct(ProductViewModel model) { if (ModelState.IsValid)

我想用jquery或javascript获取表单提交事件的响应

我正在触发表单的提交事件,类似于jquery中的事件:-

$(form).submit();
实际上,为了检查响应,我是这样做的:-

alert('resp=' + $(form).submit());
以下是行动方法:-

public ActionResult SaveProduct(ProductViewModel model)
   {           
       if (ModelState.IsValid)
       {
           return Json(true);
       }
       else
       {
           return Json(false);
       }

   }
所以它只是返回真或假。 但我在警报中得到以下响应(我触发它):-


我想知道,我如何才能得到这样的提交事件响应?

为此,您需要使用jquery.form.js

   $( "#target" ).submit(function( event ) {
        alert( "Handler for .submit() called." );
        event.preventDefault();
    });
有关更多信息:

与许多jQuery函数一样,对的调用可能只是返回一个jQuery对象。我很惊讶你真的得到了什么。对
.submit()
的调用是否会导致页面完全加载新内容?或者这是通过AJAX实现的,而我在这里没有看到

由于服务器端代码只是返回JSON数据,我假设您不想加载页面。通常对于AJAX调用,我可能只使用jQuery中的
.post()
函数。大概是这样的:

$.post('@Url.Action("SaveProduct", "YourControllerName")', $(form).serialize(), function (result) {
    // here the "result" variable will contain the response from the server
});
这是服务器端代码(使用Razor语法)和客户端代码的混合。对
Url.Action()
的服务器端调用只是为该操作方法动态创建客户端可用的Url。其余部分只是对jQuery
.post()函数的调用,向其传递三个参数:

  • 要调用的URL
  • 要发送到URL的数据,该URL来自使用jQuery的
    .serialize()
    函数的表单
  • 处理来自服务器的响应的函数

  • 如果要检查响应,应使用console.log vs alert,然后在控制台中检查响应

       console.log($(form).submit())  
    

    如果您提交表单,页面将重新加载,即使您使用jQuery触发表单提交,所有内容都将丢失,但您将在服务器端获得表单数据。使用纯javascript无法轻松做到这一点。发布表单时,表单输入将发送到服务器并刷新页面。如果您真的想在Javascript中获得响应(不刷新页面),那么您需要使用AJAX。David我们可以使用它,但它不包括一个条件,如果我们没有模型($(form).serialize()),那么我们就不能使用这种方法。>>这就是为什么我想激发$('form').submit还是$(“#submitbuttonid”).click()。>>因为这样模型会自动发布。@Pawan:不清楚你这是什么意思。您可以将事件处理程序附加到表单的提交事件或按钮的单击事件(或两者)。当然,您需要阻止这些事件的默认操作(否则表单提交事件将卸载整个页面)。序列化表单所做的一切就是将其元素转换为POST事件的键/值对。我想您可以为每个元素手动执行此操作,但通常只序列化表单更有意义。它与MVC模型无关,模型绑定器根据发布的值推断出这一点。
       console.log($(form).submit())