如何使用变量评估json成员?

时间:2010-04-29 10:06:40

标签: php javascript jquery json

嗨,我在评估json时遇到了问题。我的目标是将json成员值插入到函数变量中,看看这个

function func_load_session(svar){

var id = '';

$.getJSON('data/session.php?load='+svar, function(json){

  eval('id = json.'+svar);

});

return id;

}

此代码我从预先存储的php文件加载会话。我使用动态变量

存储该会话变量
<?php
/*
* format ?var=[nama_var]&val=[nilai_nama_var]
*/ 

$var = $_GET['var'];
$val = $_GET['val'];
$load = $_GET['load'];

session_start();

if($var){
  $_SESSION["$var"] = $val;
  echo "Store SESSION[\"$var\"] = '".$_SESSION["$var"]."'";
}else if($load){
  echo $_SESSION["$load"];  
}
?>

使用firebug,我得到了预期的响应,但我也收到了错误

> uncaught exception: Syntax error, unrecognized expression: )

指着这个

> eval('id = json.'+svar);

我想知道如何解决这个问题

2 个答案:

答案 0 :(得分:3)

使用的正确代码是:

id = json[svar];

您可能还想添加alert(svar);以检查svar是否包含正确的值。

但是,您的代码仍然不起作用:func_load_session函数将在ajax调用完成之前和分配id变量之前立即返回。

你需要做的是从ajax回调函数执行你想对id做的任何事情:

function func_load_session(svar){
    $.getJSON('data/session.php?load='+svar, function(json){
        var id = json[svar];
        doSomethingWith(id);
    });
}

答案 1 :(得分:1)

此外,如果我理解并拥有你的代码的全部内容你的json就像Store [“var”] =“var”? 看似无效的json

我建议使用php函数json_encode()

所以php会是

 $var = $_GET['var'];
$val = $_GET['val'];
$load = $_GET['load'];

session_start();

if($var){
  $_SESSION["$var"] = $val;
  echo json_encode(array($var=>$_SESSION[$var])); // or something like that 
}else if($load){
  echo json_encode(array('load'=>$_SESSION["$load"]);  
}
?>