我试图从服务器获取数据取决于登录用户的名字。
我成功获得了正确的对象,但我没有得到它的某些部分。
getDepartmentByEmp : function (){
var empName = $.trim($(".temp-test").html());
console.log(empName);
$.ajax({
contentType : "application/json",
dataType : 'json',
type : "GET",
url : "<c:url value='/app/general/add/getDepartment/'/>" + empName,
complete : function(data) {
$("#docDepartment").val(data.responseText);
$("#docDepartment").prev().html(data.responseText);
console.log(data.responseText);
console.log(typeof data.responseText);
}
});
},
empName会在我的数据库中记录每个用户的empNameTrim值。 数据类型是object,responseText是string。
其输出如下:
我想让docDepartment的值等于在这种情况下为SM的部门的值。
提前谢谢。
编辑:我按照LoïcFaure-Lacroix的提示修改了我的代码,如下所示:
第一
getDepartmentByEmp : function (){
var empName = $.trim($(".temp-test").html());
console.log(empName);
$.ajax({
contentType : "application/json",
dataType : 'json',
type : "GET",
url : "<c:url value='/app/general/add/getDepartment/'/>" + empName,
complete : function(data) {
var doc = JSON.parse(data.responseText);
$("#docDepartment").val(doc.department);
$("#docDepartment").prev().html(doc.department);
console.log(doc.department);
console.log(typeof doc.department);
}
});
},
第二
getDepartmentByEmp : function (){
var empName = $.trim($(".temp-test").html());
console.log(empName);
$.ajax({
contentType : "application/json",
dataType : 'json',
type : "GET",
url : "<c:url value='/app/general/add/getDepartment/'/>" + empName,
complete : function(data) {
$("#docDepartment").val(data.responseJSON.department);
$("#docDepartment").prev().html(data.responseJSON.department);
console.log(data.responseJSON.department);
console.log(typeof data.responseJSON.department);
}
});
},
第三
getDepartmentByEmp : function (){
var empName = $.trim($(".temp-test").html());
console.log(empName);
$.ajax({
contentType : "application/json",
dataType : 'json',
type : "GET",
url : "<c:url value='/app/general/add/getDepartment/'/>" + empName,
})
.done(function (data) {
$("#docDepartment").val(data.department);
$("#docDepartment").prev().html(data.department);
console.log(data.department);
console.log(typeof data.department);
})
},
所有这些都很好。选择你喜欢的任何东西。
答案 0 :(得分:1)
如果jQuery没有解析为JSON,请使用JSON.parse
在responseText上执行...这就是说,根据文档here,如果你转到数据类型部分,你应该阅读以下内容:
如果指定了json,则使用jQuery.parseJSON解析响应 在作为对象传递给成功处理程序之前。解析了 JSON对象通过的responseJSON属性可用 jqXHR对象。
所以你应该使用它:
$("#docDepartment").val(data.responseJSON.department)
但为了使您的代码更清晰,最好使用以下格式:
getDepartmentByEmp : function (){
var empName = $.trim($(".temp-test").html());
console.log(empName);
var request = $.ajax({
contentType : "application/json",
dataType : 'json',
type : "GET",
url : "<c:url value='/app/general/add/getDepartment/'/>" + empName,
})
request.done(function (data) {
$("#docDepartment").val(data.department);
$("#docDepartment").prev().html(data);
console.log(data);
console.log(typeof data);
})
request.fail(function () {
...
})
},
主要区别在于应使用最终数据调用done
回调。虽然使用complete
对象调用jqXHR
。只有在成功时才会调用它,而即使出现错误,也始终会调用complete
。
答案 1 :(得分:0)
如果我正确理解您的问题,则需要解析JSON对象。我相信jQuery会自动为您提供响应JSON。所以,以下内容适合您。
$("#docDepartment").val(data.responseText.department);