2016-01-13 1 views
0

Я пытаюсь получить данные с сервера, зависит от имени пользователя.Как получить определенную часть объекта в виде строки

Мне удалось получить правильный объект, но мне не удалось получить только определенную его часть.

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 пользователя в моей БД. Тип данных - объект, а responseText - строка.

И его выход выглядит следующим образом:

enter image description here

enter image description here

enter image description here

Я хочу, чтобы значение docDepartment равно значению отдела, который будет SM в этом дело.

Заранее спасибо.

EDIT: Я следовал советам Лоик Фор-Лакруа, изменил мой код, как следующее:

первый

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

Все они прекрасно работают. Выберите то, что вам нравится.

ответ

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 всегда вызывается даже при ошибках.

+0

'dataType: 'json',' in '$ .ajax()' – Tushar

+0

Спасибо, сэр, теперь он работает :) – boomboomboom

+0

ну, ваше первое предложение уже работало lol. Я попробую и ваш второй. – boomboomboom

0

Если я правильно понял ваш вопрос, вам нужно проанализировать объект JSON. Я считаю, что jQuery делает ваш ответ JSON автоматически. Итак, для вас должно работать следующее.

$("#docDepartment").val(data.responseText.department); 
+0

Благодарим за предложение, но, к сожалению, оно дает мне неопределенное значение и тип. Я пробовал data.department, data.department.responseText тоже, но он все равно дает мне такие же результаты – boomboomboom