【问题标题】:how to get response of form submit event in javascript/jquery?如何在 javascript/jquery 中获取表单提交事件的响应?
【发布时间】:2013-11-07 07:45:28
【问题描述】:

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

我在 jquery 中触发表单的提交事件:-

$(form).submit();

实际上是为了检查响应我这样做:-

alert('resp=' + $(form).submit());

下面是动作方法:-

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

   }

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

[object object]

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

【问题讨论】:

  • 如果你在提交表单,页面会重新加载,即使你用jQuery触发表单提交,也会丢失,但你会在服务器端获取表单数据。
  • 您将无法使用纯 javascript 轻松做到这一点。当您发布表单时,表单输入将发送到服务器并刷新您的页面。如果您真的想在 Javascript 中获得响应(不刷新页面),那么您需要使用 AJAX。

标签: jquery asp.net-mvc-4 response form-submit


【解决方案1】:

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

【讨论】:

    【解决方案2】:
       $( "#target" ).submit(function( event ) {
            alert( "Handler for .submit() called." );
            event.preventDefault();
        });
    

    更多信息: http://api.jquery.com/submit/

    【讨论】:

      【解决方案3】:

      像许多 jQuery 函数一样,对 .submit() itself 的调用可能只是返回一个 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() 函数,传递三个参数:

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

      【讨论】:

      • 大卫我们可以使用这个,但它不包括一个条件,如果我们没有模型($(form).serialize()),那么我们不能使用这个方法。 >> 这就是为什么我想触发 $('form').submit 还是 $("#submitbuttonid").click() 。 >> 因为这样模型会自动发布。
      • @Pawan:不清楚你的意思是什么。您可以将事件处理程序附加到表单的提交事件或按钮的单击事件(或两者)。当然,您会希望阻止这些事件的默认操作(否则表单提交事件将卸载整个页面)。所有序列化表单所做的就是将其元素转换为 POST 事件的键/值对。我想您可以为每个元素手动执行此操作,但通常只序列化表单更有意义。它与 MVC 模型无关,模型绑定器从发布的值中推断出来。
      【解决方案4】:

      如果您想检查响应,您应该使用 console.log vs alert,然后在控制台中检查响应。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-17
        • 2011-11-16
        相关资源
        最近更新 更多