2016-10-30 6 views
-1

Ich stehe vor einem kleinen Problem. Ich musste Daten von meiner Suchmaschine zur Webseite hinzufügen. Kann mir jemand sagen, wie ich auf Daten aus einer Liste innerhalb eines Wörterbuchs zugreifen kann? e .gwie auf den Wert innerhalb JSON Wörterbuch und Liste zugreifen

Ich schreibe den folgenden Code, um Ergebnisse in Konsole und Webseite anzuzeigen.

data = JSON.parse(result); 

for (var item in data['data']['hits']['hits']) { 
    console.log(data); 
    $('.class name').each(function(){ 
     $(this).append(data); 
    }); 
} 

Ich musste auf Name und Benutzername zugreifen. Ich schreibe den obigen Code, aber es zeigt nur das Objekt auf der Webseite an, wo ich wie in der Konsole auf den Namen und den Benutzernamen vom Objekt zugreifen kann, aber auf der Webseite weiß ich nicht, wie ich das machen soll.

JSON-Format ist wie dieser

{ 
    "data": { 
     "hits": { 
     "hits": [{ 
      "_score": 1.8235999, 
      "_type": "xray", 
      "_id": "1234", 
      "_source": { 
       "user_name": "kamil", 
       "name": "ahmed" 
      }, 
      "_index": "mri", 
      ..... 
      ] 
     } 
     } 
    } 

Meine Frage ist, wie kann ich die name und user_name von diesem JSON-Format zugreifen, so dass ich sie auf dem Web-Seite anhängen.

+0

JSON-Format falsch war. –

+0

Ist Ihre JSON-Struktur dynamisch? –

+0

das Format ist nicht falsch. tatsächlich bekomme ich diese Ergebnisse von der elastischen Suche und ich zeige sie in der Konsole an. Aber ich möchte Name und Benutzername anzeigen und in der Konsole sieht es so aus. .................. data: Object _shards: Object Treffer: Object Treffer: Array [1] 0: Objekt _id: "1234" _index: " mri " _quelle: Objekt name:" ahmed " benutzername:" kamil ". Ich möchte nur von diesem –

Antwort

0

Ich habe ein kleines Beispiel, vielleicht hilft:

var data = { 
 
    "data": { 
 
    "hits": { 
 
     "hits": [{ 
 
     "_score": 1.8235999, 
 
     "_type": "xray", 
 
     "_id": "1234", 
 
     "_source": { 
 
      "user_name": "kamil", 
 
      "name": "ahmed" 
 
     }, 
 
     "_index": "mri" 
 
     },{ 
 
     "_score": 1.8235999, 
 
     "_type": "xray", 
 
     "_id": "1234", 
 
     "_source": { 
 
      "user_name": "username2", 
 
      "name": "hello" 
 
     }, 
 
     "_index": "mri" 
 
     },{ 
 
     "_score": 1.8235999, 
 
     "_type": "xray", 
 
     "_id": "1234", 
 
     "_source": { 
 
      "user_name": "username 3", 
 
      "name": "asdf" 
 
     }, 
 
     "_index": "mri" 
 
     }] 
 
    } 
 
    } 
 
}; 
 

 
for (var hit in data.data.hits.hits) { 
 
    var hit = data.data.hits.hits[hit]; 
 
    var source = hit._source; 
 
    var index = hit._index; 
 
    var id  = hit._id; 
 
    $('div').append(source.user_name + ' - ' + source.name + '<br/>'); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div></div>

+0

danke. Das Beispiel funktioniert perfekt. –

+0

eine kleine Sache. Wie kann ich access_id und index von oben Beispiel. Danke für die Führung –

+0

@kamilahmed wie Sie auf _source zugreifen. Ich habe mein Beispiel mit Index und ID vars aktualisiert. – Andy

0

Man könnte so etwas wie dies für einen Treffer versuchen:

data = JSON.parse(result); 

var hit = data['data']['hits']['hits'][0]; 
if(hit){ 
    var source = hit["_source"]; 
    if(source){ 
     var user_name = source["user_name"]; 
     var name = source["name"]; 
    } 
} 

Auf dieser Grundlage Sie auf das gesamte Array anwenden könnte.

function getSourceProps(source) { 
    if(source){ 
     return { 
      usernname: source["user_name"], 
      name: source["name"] 
     }; 
    } 
    return {}; 
} 

data = JSON.parse(result); 

var hits = data['data']['hits']['hits']; 
// You could simply use a for. The for...in structure is used for other purposes. 
for (var i=0; i<hits.length; i++) { 
    // I can't understand why you make this selection. So I left it. 
    $('.class name').each(function(){ 
     var props = getSourceProps(hits["source"]); 
     if(props.length){ 
      $(this).append(props.username+" "+props.name); 
     } 
    }); 
} 
+0

Wählen für unbekannten Selektor '$ ('. Klassenname')'. Html hat keine '' Tag –

+0

@ TânNguyễn Er hat einen Kommentar" Ich kann nicht verstehen, warum Sie diese Auswahl treffen. So habe ich es verlassen " –

+0

@ TânNguyễn es ist Teil der Post. Es ist kein Fehler. Offensichtlich würde niemand "Klasse" als Wert für das Klassenattribut angeben. – 11thdimension

0

Sie data sind anhängt, die das Root-Objekt ist, hängen Sie stattdessen item.

Zum Beispiel

data = JSON.parse(result); 
var list = data['data']['hits']['hits']; 
for (var item in list) { 
    console.log(data); 
    $('.class name').each(function(){ 
     $(this).append(item['_score']);//or any other property in the object inside list 
    }); 
} 
Verwandte Themen