2016-01-13 69 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在此案件。

預先感謝您。

編輯:我跟着盧瓦克福雷 - 拉克魯瓦的提示,修改我的代碼類似以下內容:

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對象通過 jqXHR對象的responseJSON屬性可用。

所以,你應該使用這樣的:

$("#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

好吧,你的第一個建議已經工作大聲笑。我也會嘗試你的第二個。 – boomboomboom

0

如果我正確理解你的問題,你需要解析JSON對象。我相信jQuery會自動讓你的響應JSON。所以,以下內容應該適合你。

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

謝謝您的建議,但不幸的是,它只給我未定義的值和類型。我試過data.department,data.department.responseText,但它仍然給我同樣的結果 – boomboomboom

相關問題