2016-07-12 13 views
0

のためのjQueryの検索JSON私は(あなたが下の私のコードを見たときに、すぐに私はどのように新しい表示されます)jQueryとJSONに新たなんです。特定の値

私はJSONファイルを持っていると私は入力するユーザーに(JSONファイル内のキーになります))と、対応するJSON値がウェブページ上に表示されていた検索用語をできるようにしたいです。

私はこのフォーラムやウェブを検索したと、私が見つけた例を使用して、私はそれが動作していないです!一緒にスクリプトといくつかのHTMLしかし、驚きをハッキングしてきました。私はスクリプトが何をしているのかについて大まかに考えていますが、間違っているものを整理することは非常に難しいと感じています。誰かが助けることができる願って

HTML:

<input type="search" name="search" id="search"> 

のjQuery:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 

<script> 

$('#search').keyup(function() { 
    var searchField = $('#search').val(); 
    var myExp = new RegExp(searchField, "i"); 
    $.get('products.json', function(data) { 
     var output = '<ul class="searchresults">'; 
     $(data).find(searchField).each(function(index, value){ 
      var val = value.firstChild.nodeValue; 
      if ((val.search(myExp) != -1)) { 
       output += '<li>' + val + '</li>'; 
      }  
     }); 
     output += '</ul>'; 
     $('#result').html(output); 
    }); 
}); 

</script> 

JSON(products.json)(。JSONファイルはこれより長くなりますが、私はそれを簡略化してきました):

{"colors":[ 
    {"A":"red"}, 
    {"B":"green"}, 
    {"C":"blue"} 
]} 

したがって、ユーザーがHTML検索フィールドに「B」を入力すると、Webページに「緑色」が表示されます。

+0

ので、あなただけのproducts.jsonに「色」フィールドを検索したいですか?そうならば、私はこの[デモ](https://jsfiddle.net/g1gf285h/) – iownthegame

+0

チェックを単純な答えを与えることができます。ありがとうございました!デモをチェックして、結果として自分のコードが動作するようになりました。とても有難い!私はあなたの答えに投票することができるかどうか分からないのは、それがコメントだからです。もう一度感謝します。 – guradio

+1

@guradioあなた – Ben

答えて

0

これを試してください:あなたの特定の問題のいくつかのより多くの説明を

$('#search').keyup(function() { 
    var searchField = $('#search').val(); 
    $.getJSON('https://api.myjson.com/bins/59t77', function(data) { 
    console.log(data); 
     var output = '<ul class="searchresults">'; 
     $.each(data.colors, function(k, obj) { 
      if(obj[searchField]) { 
       output += '<li>' + obj[searchField] + '</li>'; 
      } 
     }); 
     output += '</ul>'; 
     $('#result').html(output); 
    }); 
}); 

は、私はより良い代替手段であなたを助けることができるかもしれません。

デモ:https://jsfiddle.net/iRbouh/0z228fya/

+0

@Ha Timご返信ありがとうございます。 – Ben

+0

@ Ismail RBOUHあなたのコードを試しましたが、まだ成功していません。私は[link] https://codepen.io/Ben10/pen/GqOkREにCodepenを設定しました。 JSONは別のペンとしてロードされます。あなたがチャンスを持っているなら、多分あなたは見て、私が間違っていたことを示唆することができます。とても有難い。 – Ben

+0

私はguadio(上記のコメント)からの回答を使用しましたが、あなたの提案に感謝します。 – Ben

0

シンプルコード:

if (typeof json.colors['B'] != 'undefined') { 
    console.log(json.colors['B']); 
} 
+0

私は@ guadioからの回答を使用しましたが(上記のコメント)、あなたの提案に感謝します。 – Ben

0

あなたは以下のようにオブジェクトの配列からフィルタデータ用grepを使用することができます。

http://manojmahato.com.np/javascript/jquery-remove-item-array-objects-jquery/

var id = 1; 
var result = $.grep(data, function(e){ 
return e.id != id; 
}); 

JSON からこのフィルタデータはなく、あなたのケースであなたは、キー のために配列からオブジェクトをフィルタ処理する必要があるので、あなたが次にあなたが結果をバインドすることができます

var data = {"colors":[ 
    {"A":"red"}, 
    {"B":"green"}, 
    {"C":"blue"} 
]}; 

var result=[]; 
var SeacrchKey="A"; 
$.each(data.colors, function(key, value) { 
if (SeacrchKey in value) 
    result.push(value); 
}); 
console.log(result) 

としてeachを使用することができます要求に応じ。 結果はこれを試して濾過オブジェクト

+0

OPコードとは何が関係していますか? OPはデータに「id」がなく、どのように統合されますか? – charlietfl

+0

@charlietflキーごとにオブジェクトをフィルタリングする方法があります。私は答えてそれを説明した。 – manoj

0

の配列を含む:

$('#search').keyup(function() { 
var searchField = $('#search').val(); 
var output = '<ul class="searchresults">'; 
$.get('products.json', function(data) { 
    jQuery.each(data.colors, function(i, val) { 
     jQuery.each(val, function(i1, val1) { 
      if(i1==searchField){ 
       output += '<li>' + val1 + '</li>'; 
      } 
     }); 
    }); 
    output += '</ul>'; 
}); 
$('#result').html(output); 

})。

+0

私はguradio(上記のコメント)からの回答を使用しましたが、あなたの提案に感謝します。 – Ben