2016-03-29 61 views
-1

我有名字和姓氏文本框,模糊上的姓氏會觸發ajax調用以獲取其他數據以填充其他文本框。調用完成後,我可以在Chrome開發工具(網絡選項卡)中看到一個json字符串將返回所有數據,但我無法弄清楚如何填充文本字段。使用ajax調用服務器填充文本框

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":"[email protected]","ManagerId":null,"ManagerFirst":"Boss","ManagerLast":"Man"} 

的 '警報' 顯示 「未定義」。

回答

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

我認爲如果數據類型設置爲「json」,那麼顯式運行parseJSON是不需要的/爲你完成?編輯:實際上dataType中的「T」應該是大寫字母。也許這就是這個問題? –

+0

我修正了錯字並添加了解析,沒有任何區別。添加parseJson行會給出錯誤:「意外的令牌o」。無論如何,我不應該解析它,響應頭已經是'Content-Type:application/json' – BattlFrog

0

您可能只是有一個錯字。嘗試改變「數據類型」,以「數據類型」

+0

沒有什麼區別。 – BattlFrog

0

原來,問題是服務器已返回Employee對象的數組,所以不得不進行訪問,如:

data[0].ManagerFirst ... etc. 

有沒有辦法告訴大家,從我發佈的數據,所以我的道歉。我一旦添加了修復程序,就將dataType參數更改爲'datatype',它仍然正常工作。