2016-03-29 9 views
-1

Ich habe Vor- und Nachname Textfelder, Nachnamen auf Blur löst einen Ajax-Aufruf, um zusätzliche Daten zu erhalten, um andere Textfelder zu füllen. Der Anruf wird getätigt und ich sehe im Chrome-Entwicklungstool (Netzwerkregister), dass eine JSON-Zeichenfolge mit allen Daten zurückkommt, aber ich kann nicht herausfinden, wie die Textfelder gefüllt werden.Füllen Textfeld mit Ajax Anruf an Server

ajax Funktion:

$(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?.") } 
      }); 
     }) 
    }) 

kehrt so etwas wie dieses:

{"EmployeeId":0,"FirstName":"Bob","LastName":"Smith","EmailAddress":null,"ManagerEmail":"[email protected]","ManagerId":null,"ManagerFirst":"Boss","ManagerLast":"Man"} 

Der 'Alarm' zeigt "undefiniert".

Antwort

0

Sie versuchen, alert ein Datenelement der Antwortzeichenfolge, die nicht vorhanden ist. Stattdessen sollten Sie versuchen, die Zeichenfolge zu konvertieren, um das Objekt, wie folgt aus:

$(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?.") } 
     }); 
    }) 
}) 

EDIT:

Als Bryan Lewis wies darauf hin, es war ein Tippfehler. Dies hat zu dem Verhalten geführt, über das ich meine Antwort geschrieben habe.

+1

Ich dachte, wenn der Datentyp auf "json" gesetzt wurde, dann wurde parseJSON explizit nicht benötigt/wird für Sie erledigt? Edit: Eigentlich sollte das "T" in dataType Caps sein. Vielleicht war das die ganze Zeit das Problem? –

+0

Ich habe den Tippfehler korrigiert und das Parsen hinzugefügt, kein Unterschied. Das Hinzufügen der parseJson-Zeile gibt den Fehler: "Unerwartetes Token o". Ich sollte es sowieso nicht parsen müssen, der Antwortheader ist schon 'Content-Type: application/json' – BattlFrog

0

Möglicherweise haben Sie nur einen Tippfehler. Versuchen Sie, „Datentyp“ auf „datatype“

+0

macht keinen Unterschied. – BattlFrog

0

das Problem stellte sich heraus, war der Server eine Reihe von Mitarbeiter Objekte zurückkehrte, so zugreifen musste es mögen:

data[0].ManagerFirst ... etc. 

Es gibt keine Möglichkeit, das zu sagen, war von die Daten, die ich gepostet habe, also entschuldige mich.

fyi, sobald ich dieses Update hinzugefügt habe, änderte ich den DataType-Parameter zurück zu 'Datentyp' und es funktionierte immer noch gut.