2017-12-27 162 views
0

我想从视图运行JavaScript/jQuery,但未显示任何内容。我的代码工作和数据被记录在数据库中,但不知道为什么的JavaScript/jQuery的没有工作无法在asp.net MVC中查看JavaScript视图MVC

我的代码:

操作代码:

[HttpPost] 
    public ActionResult Register(User user) 
    { 
     UserRepository blUser = new UserRepository(); 
     if (ModelState.IsValid) 
     { 
      if (blUser.Add(user)) 
      { 
       return Json(new JsonData() { Success = true });// return {"Success":true} 
      } 
      else 
      { 
       return Json(new JsonData() { Success = false }); // return {"Success":false} 
      } 
     } 
     else 
     { 
      return Json(new JsonData() { Success = false }); // return {"Success":false} 
     } 
} 

和视图代码:

@section Scripts { 

@Scripts.Render("~/bundles/jqueryval") 
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 
<script> 
    $(document).ready(function (e) { 
     e.preventDefault(); 
     $("#reg-btn").click(function() { 
      $.ajax({ 
       type: "Post", 
       url: "/Home/Register", 
       data: null, 
       dataTpe: "Json", 
       success: function (result) { 
        if (result.Success == true) { 
         alert("success"); 
        } 
       }, 
       error: function() { 
        alert("error"); 
       } 
      }); 
     }); 
    }); 
</script>} 

没有发生提交按钮按下数据库仅仅是数据记录时...只是在新的页面显示我“{”成功“:真正}”如果我删除鉴于这行代码:

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 

仍,如果我改变了控制器

return JavaScript("alert('success')"); // again show string "alert('success')" in new page if above line code removed 

,太局部视图返回没有工作......

它的JavaScript基准文件添加到我的项目?默认情况下Visual Studio创建2015/MVC 4 + jquery.unobtrusive-ajax.min.js

TY

+0

'e.preventDefault()'应该在click事件处理程序中。 – Shyju

回答

0

我找到了解决办法对我的问题。 只是Ajax.BeginForm方法,我加入OnSuccessOnFailure属性AjaxOptions ...和定义2个功能无论是在脚本部分

@using (Ajax.BeginForm("Register",new AjaxOptions { 
    OnSuccess = "OnSuccess", 
    OnFailure = "OnFailure" 
})) 
{ 

和脚本部分

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 
<script type="text/javascript"> 
    function OnSuccess(response) { 
      alert("done"); 
    } 
    function OnFailure(response) { 
      alert("error");  
    } 
</script> 

我希望这个答案将有助于其他人在未来

0

e.preventDefault()是在错误的地点和开发工具的控制台很可能引发错误

变化

$(document).ready(function (e) { 
    e.preventDefault(); 
    $("#reg-btn").click(function() { 
     .... 

$(document).ready(function() {   
    $("#reg-btn").click(function() { 
     e.preventDefault(); 
     .... 
+0

没有解决我的问题,但ty –