如何在javascript/jquery中获取表单提交事件的响应?
我想用jquery或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)
$(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())