2010-11-23 5 views
0

私はAJAX要求からのJSONレスポンスをつかんでいます、出力は各アクションがより多く発生することがありますように、私は彼らの特定の機能にそれらを送信するために配列のキーを必要とする今、このjQueryのJSONはinteration

{ 

    "update": 
     [{ 
      "selector":"#selectorname", 
      "attribute":"value", 
      "value":1 
     }], 
    "hide":[ 
     "#tohideselector1", 
     "#tohideselector2", 
     "#tohideselector3" 
     ], 
    "show":[ 
     "#toshowselector1", 
     "#toshowselector2", 
     "#toshowselector3"   
    ] 
} 

のようなものです一度。私はあなたが私がこれを解決する...何言っしようとしています何を、理解している場合は、PHPでこの

foreach($data as $key=>$value) { 
    switch($key) { 
     case "update": 
       update(param1,param2,param3); 
       break; 
     case "hide": 
       hide(param1); 
       break; 
     case "show": 
       show(param1); 
       break; 
    }  
} 

ようになり機能が必要ですか?

$.each(data, function(key, value) { 
    if(key cond){ 
    } 
    else if (key cond){ 
    } 
    ... 
    ... 
    else { 
    } 
}); 
+1

まずはjson_decodeを実行しますか? –

+0

AJAXリクエストはJSONレスポンスを作成しません。リクエストでJSONが作成された場合、通常はJSONメッセージまたはJSONパケットとして参照されます。 –

+0

私が書いたPHPコードは、JQueryで欲しいものの単なるイラストです。だから私にPHPソリューションを与えるすべての答えを削除してください。 – Starx

答えて

0

あなたはjsのはこのようなものになるだろう、各機能のjQueryを使用することができます。これは、デコードされたJSONをのvar_dumpといくつかの調整をする必要があります、正確ではありませんが、ここでの基本的な考え方です:あなたは、このためのjQueryを必要としない

$data = json_decode($_POST["requestSent"]); 
foreach($data as $key=>$value) { 
    switch($key) { 
     case "update": 
       update($value[0]->selector,$value[0]->attribute,$value[0]->value); 
       break; 
     case "hide": 
       /*pass params here*/ 
       break; 
     case "show": 
       /*pass params here*/ 
       break; 
    }  
} 
+0

これは私が望んだものだった..... – Starx

0

あなたはほとんどそれを得た、ちょうどオブジェクトをデコードして、あなたがそれにアクセスすることができます。

2

。 jQueryは、JSONオブジェクトを表す標準のJavaScriptオブジェクトを提供します。あなたが望むのは簡単です:

var key, value; 

for (key in data) { 
    if (!Object.prototype.hasOwnProperty.call(data, key)) { 
     continue; 
    } 

    value = data[key]; 

    switch (key) { 
     case 'update': 
      // etc. 
    } 
} 
+0

+1、ありがとう...解決策。しかし、私はjqueryのソリューション – Starx