Как оценить член JSON с помощью переменной? - PullRequest
3 голосов
/ 29 апреля 2010

Привет, у меня проблема с оценкой 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 ]

3 голосов
/ 29 апреля 2010

Правильный код:

id = json[svar];

Вы также можете добавить alert(svar);, чтобы проверить, что svar содержит правильное значение заранее.

Однако ваш код по-прежнему не будет работать: функция func_load_session вернется немедленно, до завершения вызова ajax и до назначения переменной id.

Вместо этого вам нужно выполнить то, что вы хотите сделать с id из функции обратного вызова ajax:

function func_load_session(svar){
    $.getJSON('data/session.php?load='+svar, function(json){
        var id = json[svar];
        doSomethingWith(id);
    });
}
1 голос
/ 29 апреля 2010

Кроме того, если я понимаю и имею полную часть вашего кода, ваш 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"]);  
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...