Передать объект PHP через AJAX - PullRequest
0 голосов
/ 14 декабря 2011

Мне было интересно, как лучше всего передать объект php через AJAX.

например

//objectClass = objectClass.php
$obj = new objectClass();
<a href="javascript:getOutput("some variable", $obj);

Поскольку другой файл, т.е. output.php (вызывается через ajax в функции getOutput ()), должен также обращаться к objectClass.php, каков наилучший способ доступа к $ obj?

Я пытался jscon_encode ($ obj) затем декодировать, но не работает.

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Честно говоря, будет проще всего сохранить информацию, которая должна быть передана (в данном случае объект) в переменную сеанса, как предложено @mario. Если вам нужна переменная сеанса с динамическим именем, вы можете просто передать имя (строку) переменной сеанса через AJAX.

1 голос
/ 14 декабря 2011

json_encode - лучший способ.

Вам необходимо использовать «вместо» для аргумента href и добавить опцию JSON_HEX_APOS в json_encode, чтобы экранировать любое значение в JSON.

Используйте его следующим образом:

<?php
    //objectClass = objectClass.php
    $obj = new objectClass();
?>    
<a href='javascript:getOutput(<?php echo $some_variable ?>,<?php echo json_encode ($obj, JSON_HEX_APOS) ?>);'></a>

или

<?php
    //objectClass = objectClass.php
    $obj = new objectClass();    
    echo "<a href='javascript:getOutput($some_variable, " . json_encode ($obj, JSON_HEX_APOS) . " );'></a>"
?>

РЕДАКТИРОВАТЬ: Если у вас есть jQuery, я рекомендую использовать jQuery.parse () для загрузки JSON. Если нет, вы можете использовать JSON.parse (), но я не знаю, совместимо ли это с устаревшими браузерами. В любом случае, с ними все будет в порядке (просто проверьте XSS на стороне сервера).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...