即使函数成功,Ajax结果也总是返回错误



我有一个Ajax函数,看起来像这个

$.ajax({
type: "POST",
url: "@IGT.baseUrl/SODetailsAjax/AddUnits",
traditional: true,
data: {
__RequestVerificationToken: token,
so_id: @Int32.Parse(Request["orderId"]),
site_id: site,
addItem_id: items,
addItem_qty: itemsqty,
addItem_disc: itemsdisc,
addComp_id: comps,
addComp_qty: compsqty,
addComp_disc: compsdisc,
addPart_id: parts,
addPart_qty: partsqty,
addPart_disc: partsdisc
},
success: function (data) {
if(data.success === "False"){
var errorMessage = data.Message;      
alert("Error:" + errorMessage);
return;
}
if(data.success === "True"){
location.href = "../SalesOrders/Details?id=@so.ID";
}            
},
error: function (jqXHR, status, error) {
alert("Error:" + error);
}
});

我有一个JSON ActionResult方法可以在其中实现这一点

if (!canCreate)
{                 
var errorMessage = string.Join(",", errors);
var stock = new { success = "False", Message = errorMessage };
return Json(stock, JsonRequestBehavior.AllowGet);                                       
}
else
{
var result = new { success = "True" };
return Json(result, JsonRequestBehavior.AllowGet);
}

但每次成功是真的,当我点击"确定"时,它都会返回一条错误消息,说"错误:未定义"。但是我如何才能让它继续而不是发送错误消息呢?

您有几个错误。在if (data.Success = "false")语句中,这不是条件。这是一项任务。您应该执行if (data.success === "false"),这将检查条件。还要注意,"success"是小写的,因为它被转换为Json。您还需要注意,"False"不等于"False",因此您必须选择一个大小写。在c#和JavaScript中都执行"False"/"True",或者执行"False"/"True"。

最新更新