0

我的 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。我在另一个应用程序(使用完全相同的数据库)中使用了相同的算法,并且效果很好。我不知道如何解决这个问题。任何建议或建议都将受到极大重视。谢谢你。

4

2 回答 2

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.');
            }

        });

试试这个,我想这会对你有所帮助

于 2012-10-04T05:18:20.070 回答
0

现在我很尴尬;我还没有完全调试。我认为这是因为控制器已将控制权返回给正在返回 Json 结果的视图。但是,在 Firebug 中调试后,我发现我收到了 Http 500 错误,这可能是由于 ASP.NET 的内置 Json 序列化程序对实体框架对象进行序列化的方式。

我没有将 EF 对象作为 Json 结果发送,而是实例化了一个新对象并仅分配了结果所需的属性。

也许我将来帮助其他人解决了问题。:)

此外,以下帖子帮助...

于 2012-10-04T02:49:28.167 回答