使用ajax调用服务器填充文本框

时间:2016-03-29 23:02:14

标签: json ajax asp.net-mvc

我有名字和姓氏文本框,模糊上的姓氏触发ajax调用以获取其他文本框以填充其他文本框。调用已经完成,我可以在Chrome开发工具(网络标签)中看到json字符串将返回所有数据,但我无法弄清楚如何填充文本字段。

ajax功能:

    $(function() {
        $("#LastName").on('blur', function () {
            var first = $("#FirstName").val();
            var last = $("#LastName").val();
            $.ajax({
                url: '@Url.Action("SearchEmployee", "Employee")',
                type: "GET",
                datatype: 'json',
                data: { 'firstName': first, 'lastName': last },
                success: function (data) {
                    alert(data.ManagerFirst);
                    $("#ManagerFirst").val(data.ManagerFirst);
                    $("#ManagerLast").val(data.ManagerLast);
                },
                error: function () { alert("Huh? What? What did you need?.") }
            });
        })
    })

返回类似这样的内容:

{"EmployeeId":0,"FirstName":"Bob","LastName":"Smith","EmailAddress":null,"ManagerEmail":"Boss.Man@work.org","ManagerId":null,"ManagerFirst":"Boss","ManagerLast":"Man"}

'警告'显示“未定义”。

3 个答案:

答案 0 :(得分:0)

您正在尝试alert响应字符串的数据成员,该成员不存在。相反,您应该尝试将字符串转换为对象,如下所示:

$(function() {
    $("#LastName").on('blur', function () {
        var first = $("#FirstName").val();
        var last = $("#LastName").val();
        $.ajax({
            url: '@Url.Action("SearchEmployee", "Employee")',
            type: "GET",
            datatype: 'json',
            data: { 'firstName': first, 'lastName': last },
            success: function (data) {
                //converting it to object, since further rows expect this
                data = $.parseJSON(data);
                alert(data.ManagerFirst);
                $("#ManagerFirst").val(data.ManagerFirst);
                $("#ManagerLast").val(data.ManagerLast);
            },
            error: function () { alert("Huh? What? What did you need?.") }
        });
    })
})

编辑:

布莱恩·刘易斯指出,这是一个错字。这导致了我写下答案的行为。

答案 1 :(得分:0)

你可能只有一个错字。尝试将“datatype”更改为“dataType”

答案 2 :(得分:0)

原来问题是服务器正在返回一个雇员对象数组,因此不得不像以下一样访问它:

data[0].ManagerFirst  ... etc.

我没有办法从我发布的数据中说出来,所以我很抱歉。

fyi,一旦我添加了修复程序,我就将dataType参数更改回'数据类型'它仍然工作正常。