我在View中使用jQuery和AJAX将一些数据发送到Controller,并将其写入数据库。成功后,我会显示一个带有绿色背景的div标签" OK"文本。但是如果我在Controller中首先检查数据是否已存在于数据库中,那么我想提醒用户无法添加数据。有没有办法将某种消息传递回AJAX脚本?
我想成功选项只是确认与Controller的联系,而不是真正确认一切正常并且数据已添加到数据库中了??
Controller中的哪些操作会导致AJAX代码中的错误功能运行?
最后我只是想知道我应该使用什么样的回报,因为我实际上没有回复任何东西?
我在视图中的脚本:
$.ajax({
url: "/Orders/AddOrder",
type: "GET",
cache: false,
data: { a: order, b: seller },
success: function () {
console.log('AJAX successful');
// Show confirm message
$(".messageOk").show();
$(".messageOk").text("OK").delay(2000).queue(function () {
location.reload();
});
},
error: function () {
????
},
complete: function () {
????
}
});
控制器:
// Add new Resource
public ActionResult AddOrder(int a, int b)
{
var order = new Order
{
OrderNumber = a,
Seller = b
};
db.Orders.Add(order);
db.SaveChanges();
//return new EmptyResult();
return RedirectToAction("Index", "Home"); // ??????
}
答案 0 :(得分:1)
您可以从控制器操作中返回相应的HTTP状态代码:409 Conflict
。
if (the resource already exists in db) {
return new HttpStatusCodeResult(HttpStatusCode.Conflict);
}
将触发error
AJAX函数,您可以在其中检查您是否处于这种情况并采取相应行动:
error: function(jqXHR) {
if (jqXHR.status == 409) {
alert('Sorry but this resource already exists');
}
}
正如您可以通过这种方式看到的,它可以根据从服务器返回的正确HTTP状态代码来决定显示哪些错误消息。这样,您就不会使用视图逻辑混乱服务器。
答案 1 :(得分:0)
除了正确的响应状态代码,您还可以从服务器传入您的响应正文错误消息,可能是JSON字符串或纯字符串