无法从asp.net MVC中的视图运行JavaScript

时间:2017-12-27 19:44:23

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

我想从视图中运行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>}
当提交按钮仅按下数据库中的数据记录时,没有任何事情发生...只是在新页面显示我&#34; {&#34;成功&#34;:true}&#34;如果我在视图中删除了这个行代码:

<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

2 个答案:

答案 0 :(得分:0)

您的$(document).ready(function (e) { e.preventDefault(); $("#reg-btn").click(function () { .... 位置错误,可能会在开发工具控制台中抛出错误

更改

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

import itertools
import operator

get_id = operator.itemgetter('_id') #factory function: lambda x:x['_id']
grouped = itertools.groupby(sorted(json_data, key=get_id), get_id)

result = [next(g) for k,g in grouped]

答案 1 :(得分: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>

我希望这个答案能在将来帮助其他人