JQuery JSON Interation - PullRequest
       2

JQuery JSON Interation

0 голосов
/ 23 ноября 2010

Я получаю ответ JSON от AJAX-запроса, вывод выглядит примерно так:

{

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

Если вы поняли, что я пытаюсь сказать ... Какое решение для этого?

Ответы [ 3 ]

2 голосов
/ 23 ноября 2010

Вам не нужен jQuery для этого.jQuery предоставляет вам стандартный объект JavaScript, представляющий объект JSON.То, что вы хотите, тривиально:

var key, value;

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

    value = data[key];

    switch (key) {
        case 'update':
            // etc.
    }
}
0 голосов
/ 23 ноября 2010

Вы почти получили его, просто расшифруйте объект, и тогда вы сможете получить к нему доступ.Это не точно, вам нужно 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;  
    }    
}
0 голосов
/ 23 ноября 2010

вы можете использовать jQuery для каждой функции, js будет выглядеть примерно так:

$.each(data, function(key, value) { 
  if(key cond){
  }
  else if (key cond){
  }
  ...
  ...
  else {
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...