2013-11-20 24 views
0

我查看了其他相同问题的问题。我尝试了所有的建议,但它似乎并没有工作。 我正在使用MVC4.I调用表单提交使用post方法在jQuery中的操作方法。但是,当控制器retruns JSON,它加载了新的一页像下面从控制器返回的JSON对象在新屏幕中呈现

{"ok":true,"message":"success"} 

,而不是返回的地方,我希望它的地步。

这是我的cshtml页面。 (只是开始形式和按钮)

@using (Html.BeginForm("SendMail", "Home", FormMethod.Post, new { name = "HomePage", id = "HomePage" })) 
{ 
    <input id="BtnSend" type="submit" value="SEND MAIL" > 
} 

这是我的jQuery脚本来做ajax后。

$('#HomePage').submit(function() { 
         $.ajax({ 
          type: this.method, 
          url: this.action, 
          data: $(this).serialize(), 
          dataType: 'html', 
          success: function (returndata) { 
           alert(returndata.Data); 
          } 
         }); 


    }); 

根据另一篇文章的建议,我试了这个。

$('#HomePage').submit(function() { 
     var form = $($("form")[0]); 

     form.submit(function() { 
      $.post(form.attr("action"), $(this).serialize(), function (result, status) { 
       alert(result.Success); 
      }); 
     }, "json"); 
    }); 

这也没有帮助。 这里是我的控制器的操作方法(只需签名和return语句去掉其他逻辑)

[HttpPost] 
    public JsonResult SendMail() 
    { 

     TryUpdateModel(EmailHomeViewModel); 
     // i have removed rest of the logic here 
     return Json(new { ok = true, message = "success" }, "text/plain", JsonRequestBehavior.AllowGet); 


    } 

我核实,我在我的网页添加unobstrsive的Ajax库。我在同一页面上有其他ajax调用控制器。他们工作正常。所以唯一不同的是在这里我正在做一个表单提交。有人可以建议,如果我在这里失去一些东西?谢谢你的帮助。

回答

0

试试这个(未经测试):

$('#HomePage').submit(function (e) { 
       e.preventDefault(); // prevent default form submit behaviour 
        $.ajax({ 
         type: this.method, 
         url: this.action, 
         data: $(this).serialize(), 
         dataType: 'html', 
         success: function (returndata) { 
          alert(returndata.Data); 
         } 
        }); 


}); 
+0

非常感谢你@geedubb。它停止默认提交行为后工作 – Oogway

+0

如果有帮助,请标记为答案。谢谢 – geedubb

相关问题