2016-11-01 10 views
-3

サーバーに照会すると、JSONファイルが返されます。私が返すJSONファイルは次の形式になります。JSONデータはどのように使用しますか?

{ 
    "head": { 
    "link": [], 
    "vars": ["bookName", "author"] 
    }, 
    "results": { 
    "distinct": false, 
    "ordered": true, 
    "bindings": [ 
     { 
     "bookName": { 
      "type": "literal", 
      "xml:lang": "en", 
      "value": "Of Mice and Men" 
     }, 
     "author": { 
      "type": "literal", 
      "xml:lang": "en", 
      "value": "John Steinbeck" 
     } 
     } 
    ] 
    } 
} 

これは私がこれまでに行っているものです:私が行うことができるようにしたいどのような

$.ajax({ 
    dataType: "jsonp", 
    url: queryUrl, 
    success: function(data) {  
     // get the table element 
     var table = $("#results"); 


     // get the sparql variables from the 'head' of the data. 
     var headerVars = data.head.vars; 

     // using the vars, make some table headers and add them to the table; 
     var trHeaders = getTableHeaders(headerVars); 
     table.append(trHeaders); 

     // grab the actual results from the data.           
     var bindings = data.results.bindings; 

     var book = data.results.bindings[1].bookName.value; 

     // for each result, make a table row and add it to the table. 
     var numberOfBooks = 0; 
     for(rowIdx in bindings){ 
      table.append(getTableRow(headerVars, bindings[rowIdx])); 
      numberOfBooks++; 
     }    

     document.getElementById("searched-for").innerHTML="<h1>You seach for " + '"' + input + '"' + " and we found " + numberOfBooks + " books </h1>"; 
    } 
});   

は次のようなものです:

var book = data.results.binding[1].bookName.value; 
+1

配列はゼロインデックスされているので、 'bindings [1]'は* second *要素を選択します(1つしかありません)。それは問題ですか? – JJJ

+1

これはJSONではない、これはjavascriptオブジェクトです。 'for 'を使うのではなく' forEach or map'メソッドを使うようにしてください。 @JJJは配列内の唯一のオブジェクトを持っているので、[1]ではなく[0] –

答えて

1

はこれを試してみてください:

$.ajax({ 
dataType: "jsonp", 
url: queryUrl, 
success: function(data) {  
    // get the table element 
    var table = $("#results"); 


    // get the sparql variables from the 'head' of the data. 
    var headerVars = data.head.vars; 

    // using the vars, make some table headers and add them to the table; 
    var trHeaders = getTableHeaders(headerVars); 
    table.append(trHeaders); 

    // grab the actual results from the data.           
    var bindings = data.results.bindings; 

    var book; 

    if(bindings && bindings.length) { 
     book = bindings[0].bookName.value; 
    } 

    // for each result, make a table row and add it to the table. 
    var numberOfBooks = 0; 
    for(rowIdx in bindings){ 
     table.append(getTableRow(headerVars, bindings[rowIdx])); 
     numberOfBooks++; 
    }    

    document.getElementById("searched-for").innerHTML="<h1>You seach for " + '"' + input + '"' + " and we found " + numberOfBooks + " books </h1>"; 
} 
}); 

しかし、それは最初の本を得るだけです、私はそれが存在する。

関連する問題