如何将对象的某些部分作为字符串

时间:2016-01-13 03:06:27

标签: javascript jquery ajax

我试图从服务器获取数据取决于登录用户的名字。

我成功获得了正确的对象,但我没有得到它的某些部分。

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。

其输出如下:

enter image description here

enter image description here

enter image description here

我想让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);
    })
},

所有这些都很好。选择你喜欢的任何东西。

2 个答案:

答案 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);