Jquery JSON集成

时间:2010-11-23 08:43:29

标签: jquery json

我从AJAX请求中获取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;  
    }    
}

如果您已经理解,我想说的是什么......解决方案是什么?

3 个答案:

答案 0 :(得分: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.
    }
}

答案 1 :(得分:0)

你可以使用jQuery的每个函数,js就是这样的:

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

答案 2 :(得分: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;  
    }    
}