2017-02-23 26 views
0

Ich habe eine allgemeine JavaScript-Funktion, die Daten füllen zur Liste wie folgt:Wie kann man auf Objektschlüssel per Index in jquery zugreifen?

// manage all drop down list control 
var ajaxFillDropDownList = function (options, ddl) { 

    ddl.find("option").remove(); 

    ddl.addClass("form-control required") 
     .append($("<option />").attr("value", "") 
     .text("------ Please Select a item --------") 
     ); 

    $.ajax(options) 
     .done(function (data) { 

      var result = ""; 

      if (data.value) { 
       result = JSON.parse(data.value); 
      } 

      $.each(result, function (rowIndex, r) { 
       ddl.append($("<option></option>") 
        .val(r.?) 
        .text(r.?); 
      }); 
     }) 
     .fail(function (error) { 
      ddl.append($("<option />").attr("value", "").text("error in load")); 
     }); 
} 

Die folgende Funktion aufgerufen wird:

// -- Fill dropdownlist 
var fillMyList = function() { 
    try { 

     var options = { 
      type: "POST", 
      url: "/User/GetUserList", 
      data: JSON.stringify({}), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json" 
     } 

     ajaxFillDropDownList(options, $("#ddlUser")); 

    } catch (error) { 
     ShowClientErrorMessage("client Error", error.stack, error.message); 
    } 
} 

I Schlüssel Ergebnis wie dynamisch in $ .each Schleife möchten. Ich bin es leid, den Code unten zu verwenden, aber die Liste ist mit Schlüsselnamen gefüllt.

.val("r." + Object.keys(r)[0]) 

Ich wäre dankbar, wenn jemand mich führen könnte.

+6

Objekte haben keine intrinsische Ordnung, so durch den Index nicht zugegriffen werden kann. Wenn Sie dieses Verhalten benötigen, verwenden Sie ein Array –

+0

Danke an alle. Mein Problem wurde gelöst. –

Antwort

0

Ich änderte .val("r." + Object.keys(r)[0]) zu

.val(eval("r." + Object.keys(r)[0])) 
.text(eval("r." + Object.keys(r)[1])) 

Code erfolgreich umgesetzt wurde.

+1

Ich würde argumentieren, dass dies keine praktikable Lösung ist. 'eval()' wird als das Schlimmste betrachtet, das Sie in JS verwenden können. –

1

zum schnellen Nachschlagen der Fiddle Link https://jsfiddle.net/rj1405/sd4mxpae/2/

Key: Object.keys(obj)[0]

Wert: hier obj ist ein Objekt innerhalb result oder meine myObject Array.

obj[Object.keys(obj)[0]] 

Sie können den folgenden Code ausführen.

var myObject = [{ 
 
    property1: 'value 1' 
 
}, { 
 
    property2: 'value 2' 
 
}] 
 

 
var selectElement = document.getElementById('selectElement'); 
 
$.each(myObject, function (i, r) { 
 
$(selectElement).append($('<option>',{ 
 
     value: Object.keys(r)[0], 
 
     text : r[Object.keys(r)[0]] 
 
    })); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="selectElement"> 
 
</select>

Verwandte Themen