在MVC中的Ajax发布后无法显示警报

时间:2018-11-28 17:41:48

标签: javascript ajax asp.net-mvc

在我的asp.net mvc应用程序中,我想在客户端注册自己后显示警报,我的应用程序运行正常,这是剩下要做的唯一事情,我确定我缺少一些愚蠢的东西

    public ActionResult Register(Client client)
    {
           ClientDAL objClientDAL = new ClientDAL();

           objClientDAL.Insert(client);

           return Json(new { msg = "Thank you!" }, JsonRequestBehavior.AllowGet);
    } 

在我看来

                $("#btnSalvar").click(function () {
                    $.ajax(
                        {
                            type: "POST",                              
                            url: "/Home/Register",
                            contentType: 'application/json; charset=utf-8',                              
                            data:
                                {
                                    ID: $('#txtMatricula').val(),
                                    Name: $('#txtNome').val(),
                                    Age: $('#txtIdade').val(),
                                    StateID: $('#ddlEstados').val(),
                                    CityID: $('#ddlCidades').val(),
                                    Gender: $('#Fumante').val()
                                },

                            success: function (data)
                            {
                                alert(data.msg);                                       
                            },

                            error: function (data)
                            {
                                alert(data.msg); 
                            },

                        });
                });

正如我所说的,一切正常,但是我无法以警报形式显示消息,当我尝试时,它看起来像这样...

{“ msg”:“谢谢!”}在空白页中,就像只是忽略了我的成功功能一样,我是asp.net mvc的新手。

(顺便说一句,你们可能会注意到某些词与url或按钮一样,这是因为英语不是我的母语,所以我只是翻译了关键部分,以便你们可以更好地了解发生的事情)。

1 个答案:

答案 0 :(得分:0)

  

当我尝试此操作时,它看起来像这样……{“ msg”:“谢谢!”}   空白页

这意味着用于执行Ajax代码的客户端代码未被执行。

通常在以下情况发生这种情况:您在form标记内有一个按钮,并连接了一些Ajax代码来处理按钮单击/表单提交被拒绝的行为,但是却忘记了停止/阻止正常表单提交行为。

您可以使用preventDefault方法。

我还看到您的代码还有其他一些问题

您的click事件处理程序是在另一个函数中编写的。那没有任何意义。谁在调用该方法?如果没有人调用该方法,那么您的click事件处理程序将不会注册。最好在document ready事件中连接click事件处理程序。

我还看到您在ajax调用中指定了contentType选项。这将以Content-Type的形式发送application/json头值,并且模型绑定程序尝试从请求正文中读取数据。但是,您正在将JavaScript对象作为data属性发送。从代码中删除contentType或使用JSON.stringify方法创建对象的JSON字符串版本,并将其作为data选项的$.ajax属性发送。请参阅this帖子以获取示例代码。发送复杂对象时很有用。

这应该有效

$(function () {

    $("#btnSalvar").click(function (e) {
        e.preventDefault();
        $.ajax(
            {
                type: "POST",
                url: "/Home/Register",
                data:
                    {
                        Id: 3,
                        Title: "Scott",
                        Age:2,
                    },

                success: function (data) {
                    alert(data.msg);
                },

                error: function (jqXHR, status, error) {
                    alert(error);
                    console.log(status)
                },

            });
    });

})