2012-05-10 11 views
1

私が検索する必要があるJSON配列を持っている:JSON配列は変数に基づいて検索しますか?

キーワードを使用して
[ 
{ 
     "Device_ID":"1", 
     "Image":"HTC-One-X.png", 
     "Manufacturer":"HTC", 
     "Model":"One X", 
     "Region":"GSM", 
     "Type":"Phone" 
    }, 
    { 
     "Device_ID":"2", 
     "Image":"Motorola-Xoom.png", 
     "Manufacturer":"Motorola", 
     "Model":"Xoom", 
     "Region":"CDMA", 
     "Type":"Tablet" 
    }, 
    { 
     "Device_ID":"8", 
     "Image":"null", 
     "Manufacturer":"Motorola", 
     "Model":"Xoom 2", 
     "Region":"CDMA", 
     "Type":"Tablet" 
    } 
] 

$_GET['keyword'];私は次のことを実行できるようにする必要があります。 メーカーとモデルの組み合わせ価値を検索します。 Motorola Xoom。次に、これに一致する値のセットに対して、それらを変数に出力します。キーワードはモトローラは、それは出力にモトローラが含まれるすべてのエントリが必要になりました場合は

$DeviceID = 1 $Image = HTC-One-X.png $Manufacturer = HTC $Model = One 
X $Region = GSM $Type = Type 

:キーワードはHTCだった場合、それはアレイと出力を検索します:たとえば

私がしようとしているのは、ユーザーがキーワードを入力すると、すべてのJSON配列エントリのライブビューが出力されます。しかし、私はこれをサーバー上の負荷を軽減するためにユーザーのコンピュータ上で実行します。

誰もがこの問題を克服する最善の方法を知っていますか?

+1

あなたはjavascriptを使用する必要があります。 – SirDarius

+0

おっと、なぜ私はj​​avascriptタグの代わりにphpを追加したのかわかりません。ソート済み – K20GH

+1

あなたはどんな問題がありますか?配列全体を繰り返し処理し、キーワードが 'Manufacturer'プロパティにあるかどうかを確認する必要があります。また、JSONとしてデータを取得している点を除いて、この問題がJSONにどのように関係しているのかわかりません(ただし、* JSONでは問題がないようです)。 –

答えて

1

だけでなく、あなたはそれが同じくらい簡単ですオプションセクションのメーカーの値と選択ボックスがある場合:

はHTML:

<select id="selectionBox"> 
    <option>...</option> 
</select> 
<div id="outPut"> 
    output goes in here 
</div> 

Javascriptを:

var selectedValue = document.getElementById("selectionBox").value; 
for(var i = 0; i < jsonObject.length; i++){ 
    if(jsonObject[i].Manufacturer === selectedValue){ 
    //considering your object is an array let's 
    for(var key in jsonObject[i]){ 
     document.getElementById("outPut").innerHTML += jsonObject[i][key] + "</br>"; 
    } 
    } 
} 

を「はオブジェクトの中のすべてを出力divにほとんど印刷しますが、残りはスタイリングまでです。

1

ここにJSONをフィルタリングする関数があります。データの表示はあなた次第です。

var devices = <your JSON array>;  

function filter(keyword, data) { 
    var filteredArray = [], i, j; 
    for (i = 0, j = data.length; i < j; i++) { 
     if ((data[i].Manufacturer && data[i].Manufacturer.indexOf(keyword) !== -1) || (data[i].Model && data[i].Model.indexOf(keyword) !== -1)) { 
      filteredArray.push(data[i]); 
     } 
    } 
    return filteredArray; 
} 

// Example usage 
var MotorolaDevices = filter('Motorola', devices); 
関連する問題