我有名字和姓氏文本框,模糊上的姓氏触发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"}
'警告'显示“未定义”。
答案 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参数更改回'数据类型'它仍然工作正常。