我与Ajax调用的行为不一致。
...控制器
public JsonResult checkWwid(string wwid)
{
EMPLOYEE employee = db.EMPLOYEES.SingleOrDefault(e => e.ID == wwid.ToUpper());
if (employee != null)
{
return Json(employee, JsonRequestBehavior.AllowGet);
}
employee = new EMPLOYEE();
employee.ID = "Unknown";
employee.NAME = "Unknown";
employee.ORGANIZATION_ID = "Unknown";
employee.WORK_SITE_ID = "Unknown";
return Json(employee, JsonRequestBehavior.AllowGet);
}
当用户输入无法识别的员工ID时,我会返回一个具有所有值“未知”的员工对象。这很好用。但是,当输入的员工ID与数据库中的结果匹配时,由于某种原因,无法达到“else”条件 - 尽管员工Json对象已成功返回到视图。
查看...
$('#Wwid').change(function () {
$("#wwid_alert").hide();
var selectedWwid = $(this).val();
$.getJSON('@Url.Action("checkWwid")', { wwid: selectedWwid }, function (employee) {
alert(employee.NAME);
if (employee.ID == 'Unknown') {
alert(employee.NAME);
$("#wwid_alert").show();
$("#wwid_alert").text("This WWID is not in the database; you will not be able to sucessfully submit this form.");
} else { // This is not working even though I am getting a JSON result.
alert(employee.NAME);
$("#wwid_alert").show();
$("#wwid_alert").text(employee.NAME);
}
});
});
通过调试,我知道Json结果正在返回到View。我在另一个应用程序(使用完全相同的数据库)中使用了相同的算法,并且工作正常。我对如何解决这个问题感到茫然。任何建议或建议都会受到重视。谢谢。
答案 0 :(得分:1)
嗨,你也可以得到你的json值,如下所示
$.ajax({
url: "/City/State",
dataType: 'json',
data: { countryId: countryID },
success: function (data) {
alert(data);
$("#stateID").empty();
$("#stateID").append("<option value='0'>--Select State--</option>");
$.each(data, function (index, optiondata) {
alert(optiondata.StateName);
$("#stateID").append("<option value='" + optiondata.ID + "'>" + optiondata.StateName + "</option>");
});
},
error: function () {
alert('Faild To Retrieve states.');
}
});
尝试这个我认为这会对你有所帮助
答案 1 :(得分:0)
现在我很尴尬;我没有完全调试过。我认为这是因为控制器已将控制权返回给视图,即返回了Json结果。但是,在Firebug中调试之后,我发现我收到了Http 500错误,可能是由于ASP.NET内置的Json序列化程序对Entity Framework对象进行序列化的方式。
我没有将EF对象作为Json结果发送,而是实例化了一个新对象,并仅为结果分配了所需的属性。
也许我已经帮助别人解决了一个问题。 :)