簡體   English   中英

無法從asp.net MVC中的視圖運行JavaScript

[英]Cant run JavaScript from view in asp.net MVC

我想從視圖運行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()放在錯誤的位置,可能會在開發工具控制台中e.preventDefault()錯誤

更改

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

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

我找到了解決我問題的方法。 只是在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>

我希望這個答案將來能對其他人有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM