【问题标题】:Cant run JavaScript from view in asp.net MVC无法从 asp.net MVC 中的视图运行 JavaScript
【发布时间】:2018-06-08 10:19:12
【问题描述】:

我想从视图中运行 JavaScript/jQuery,但没有显示任何内容。我的代码工作和数据记录在数据库中,但不知道为什么 JavaScript/jQuery 不起作用

我的代码是:

操作代码:

[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>}

按下提交按钮时没有任何反应,只是数据库中的数据记录......如果我在视图中删除了此行代码,则在新页面中显示“{“Success”:true}”:

<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

【问题讨论】:

  • e.preventDefault() 应该在点击事件处理程序中。

标签: javascript jquery asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

您的e.preventDefault() 位置错误,很可能在开发工具控制台中抛出错误

改变

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

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

【讨论】:

    【解决方案2】:

    我找到了解决问题的方法。 就在Ajax.BeginForm 方法中,我将OnSuccessOnFailure 属性添加到AjaxOptions ...并在脚本部分中为这两个函数定义了两个函数

    @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>
    

    我希望这个答案对以后的其他人有所帮助

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 2014-03-11
      • 1970-01-01
      相关资源
      最近更新 更多