2010-11-23 40 views
0

我抓住從AJAX請求的JSON響應,輸出是這樣的jQuery的JSON互爲作用

{ 

    "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; 
    }  
} 

如果你已經瞭解,我想說什麼......這是什麼解決方案?

+1

你先做json_decode? – 2010-11-23 08:45:26

+0

AJAX請求不會創建JSON響應。如果請求創建JSON,通常會將其稱爲JSON消息或JSON數據包。 – 2010-11-23 08:47:04

+0

我寫的PHP代碼只是我在Jquery中想要的一個插圖。所以請刪除給我PHP解決方案的所有答案。 – Starx 2010-11-23 09:27:23

回答

0

你可以使用jQuery的每個功能,JS會是這樣的:

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

你幾乎得到了它,只是解碼對象,然後您可以訪問它。這是不完全一樣,你需要的var_dump解碼JSON和做一些調整,但這裏的基本思想是:

$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; 
    }  
} 
2

你不需要jQuery的這一點。 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. 
    } 
}