2010-11-23 4 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