首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >表单提交后如何做Jquery回调?

表单提交后如何做Jquery回调?
EN

Stack Overflow用户
提问于 2012-07-18 13:17:25
回答 6查看 322.4K关注 0票数 125

我在remote=true上有一个简单的表单。

该表单实际上位于一个HTML对话框中,一旦单击Submit按钮,该对话框就会关闭。

现在,在表单成功提交后,我需要对HTML主页面进行一些更改。

我使用jQuery进行了尝试。但这并不能确保在表单提交的某种形式的响应之后执行任务。

代码语言:javascript
运行
复制
$("#myform").submit(function(event) {

// do the task here ..

});

如何附加回调,以便只有在表单成功提交后才执行代码?有没有办法在表单中添加一些.success或.complete回调?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-07-18 22:04:51

我就这么做了-

代码语言:javascript
运行
复制
 $("#myform").bind('ajax:complete', function() {

         // tasks to do 


   });

一切都运行得很完美。

有关更具体的详细信息,请参阅this api documentation

票数 126
EN

Stack Overflow用户

发布于 2013-08-07 01:27:30

我不能让排名第一的解决方案可靠地工作,但我发现它是有效的。我不确定它是否是必需的,但我在标记上没有操作或方法属性,它确保POST由$.ajax函数处理,并为您提供回调选项。

代码语言:javascript
运行
复制
<form id="form">
...
<button type="submit"></button>
</form>

<script>
$(document).ready(function() {
  $("#form_selector").submit(function() {

    $.ajax({
     type: "POST",
      url: "form_handler.php",
      data: $(this).serialize(),
      success: function() {
        // callback code here
       }
    })

  })
})
</script>
票数 39
EN

Stack Overflow用户

发布于 2014-02-07 04:50:47

对于MVC来说,这里有一种更简单的方法。您需要使用Ajax表单并设置AjaxOptions

代码语言:javascript
运行
复制
@using (Ajax.BeginForm("UploadTrainingMedia", "CreateTest", new AjaxOptions() { HttpMethod = "POST", OnComplete = "displayUploadMediaMsg" }, new { enctype = "multipart/form-data", id = "frmUploadTrainingMedia" }))
{ 
  ... html for form
}

以下是提交代码,它位于文档就绪部分,并将按钮的onclick事件绑定到提交表单

代码语言:javascript
运行
复制
$("#btnSubmitFileUpload").click(function(e){
        e.preventDefault();
        $("#frmUploadTrainingMedia").submit();
});

下面是在AjaxOptions中引用的回调

代码语言:javascript
运行
复制
function displayUploadMediaMsg(d){
    var rslt = $.parseJSON(d.responseText);
    if (rslt.statusCode == 200){
        $().toastmessage("showSuccessToast", rslt.status);
    }
    else{
        $().toastmessage("showErrorToast", rslt.status);
    }
}

在MVC的控制器方法中,它看起来像这样

代码语言:javascript
运行
复制
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult UploadTrainingMedia(IEnumerable<HttpPostedFileBase> files)
{
    if (files != null)
    {
        foreach (var file in files)
        {
            // there is only one file  ... do something with it
        }
        return Json(new
        {
            statusCode = 200,
            status = "File uploaded",
            file = "",
        }, "text/html");
    }
    else
    {
        return Json(new
        {
            statusCode = 400,
            status = "Unable to upload file",
            file = "",
        }, "text/html");
    }
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11534690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档