2017-02-20 2 views
-1

Ich habe einige Daten aus einem Entity Framework gespeicherten Prozedur abgerufen und möchte die Seite durch die Menge durchlaufen und den Wert zu einem anderen Div-Element zuweisen.Verwenden Sie Elemente in Json-Daten als Text

ich das auf der Seite haben:

(Versuchte 2 verschiedene Möglichkeiten unten - KValueText2/3 sind Spaltenüberschriften in der Abfrage zurückgegeben)

var KId2 = $('#Selector :selected').val() 
     $.get("/Home/getValTitles", { HeadID: KId2 }, function (data) { 
      for (var idx in data.result) { 
       var results = data.results[idx]; 
       $('#ValueText1').html(results(0)); 
       $('#ValueText2').text = results(idx).KValueText2; 
       $('#ValueText3').text = results(idx).KValueText3; 
      } 
     }) 

... und auf dem Controller :

public JsonResult getValTitles(string HeadID) 
     { 
      var temp2 = et.usp_Read_K_Value_Titles(HeadID); 
      return Json(temp2, JsonRequestBehavior.AllowGet); 
     } 

Wie ordne ich jedes Element in den zurückgegebenen Daten einem anderen Element auf der Seite zu?

JSON Daten zurückgegeben:

[ 
    { 
    "KValueText1":"Calls", 
    "KValueText2":"Total", 
    "KValueText3":‌​null 
    } 
] 
+1

zeigen Sie uns ein Beispiel, das die Struktur des "Daten" -Objekts bitte zeigt . – ADyson

+0

@ADyson meinst du die Daten, die von der DB erwartet werden? – danverbs

+0

ja. das Objekt "data", das in 'function (data)' zurückgegeben wird. Zeig uns die Struktur davon. (Sie können es erhalten, indem Sie 'console.log (JSON.stringify (Daten));) – ADyson

Antwort

0

Ihre Beispieldaten sind ein Array mit einem Element, das ein Objekt ist. Es ist ein bisschen eine seltsame Struktur, denn aus Ihrem Code sieht es so aus, als ob Sie nur an dem einen Objekt interessiert sind (da Sie die Werte direkt bestimmten Elementen zuweisen). Wie auch immer es hier zu lesen ist:

var KId2 = $('#Selector :selected').val() 
$.get("/Home/getValTitles", { HeadID: KId2 }, function (data) { 
    $('#ValueText1').html(data[0].KValueText1); 
    $('#ValueText2').text(data[0].KValueText2); 
    $('#ValueText3').text(data[0].KValueText3); 
}) 

N.B. Wenn Sie den Rückgabewert ändern können, um ein einzelnes Objekt anstelle eines Arrays zu sein, können Sie die [0] in jeder Zeile loswerden und nur direkt auf die Eigenschaften zugreifen. (Die [0] wird verwendet, um auf den ersten Index des Arrays zuzugreifen. Sie könnten auch eine for Schleife verwenden, aber es ist sinnlos, da Sie nur ein Element haben.)

+0

Perfect thank you! Und vielen Dank für die Bearbeitung/geduldig sein ... noch neu auf dieser Seite und sich daran gewöhnt, wie es funktioniert. Mein Code funktioniert jetzt – danverbs

0

Da idx der Looping-Variable ist es das json Array-Element enthalten wird derzeit innerhalb der Schleife

verarbeiteten

daher kann man

  $('#ValueText2').text = idx.KValueText2; 
      $('#ValueText3').text = idx.KValueText3; 

verwenden Hol dir den Wert der Spalten KValueText2, KValueText3

Verwandte Themen