嗨,我在评估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);
我想知道如何解决这个问题
答案 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"]);
}
?>