在我的ASP.net mvc3项目中,我使用ajax调用将json数据发送到控制器公司中的create action方法。但是当我调试ajax调用时,它总是以错误结果而不是成功结果结束。
ajax电话:
$.ajax({
url: '/Company/Create',
type: 'POST',
data: JSON.stringify(CreateCompany),
dataType: 'Json',
contentType: 'application/json; charset=utf-8',
success: function () {
alert('ajax call successful');
},
error: function () {
alert('ajax call not successful');
}
});
我在公司控制器中的操作方法:
[HttpPost]
public ActionResult Create (Company company)
{
try
{
//Create company
CompanyRepo.Create(company);
return null;
}
catch
{
return View("Error");
}
}
我已经调试了动作方法,但他完全按照自己的意愿完成了。 因此,使用ajax调用发送的数据将被处理并写入db。 (action方法不使用catch部分。)
为什么我的ajax调用仍然会显示“ajax call not successful”这个消息?
答案 0 :(得分:4)
我以前在获取JSON结果方面遇到了同样的问题。 我做的是将dataType设置为“text json”:)) 如果这无助于通过获取错误的详细信息来获取其他信息,例如:
$.ajax({
url: '/Company/Create',
type: 'POST',
data: JSON.stringify(CreateCompany),
dataType: 'text json',
contentType: 'application/json; charset=utf-8',
success: function () {
alert('ajax call successful');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
}
});
顺便说一句:我在StackOverflow上找到了这个解决方案
答案 1 :(得分:1)
为什么在控制器操作成功的情况下返回null
?返回成功例如JSON对象(特别是在您的AJAX请求中指出您希望来自服务器的JSON响应 - 使用dataType: 'json'
设置 - 顺便说一下,它应该是小写的j
) :
return Json(new { success = true });
答案 2 :(得分:0)
这不会更容易:
$.post("/Company/Create", function (d) {
if (d.Success) {
alert("Yay!");
} else {
alert("Aww...");
}
}, "json");
在您的控制器中。
[HttpPost]
public JsonResult Create(
[Bind(...)] Company Company) { <- Should be binding
if (this.ModelState.IsValid) { <- Should be checking the model state if its valid
CompanyRepo.Create(Company);
return this.Json(new {
Success = true
});
};
return this.Json(new {
Success = false
});
}