在我的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或按钮一样,这是因为英语不是我的母语,所以我只是翻译了关键部分,以便你们可以更好地了解发生的事情)。
答案 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)
},
});
});
})