2011-12-14 8 views
0

Мне было интересно, какой лучший способ - передать объект php через AJAX.Пропустить 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), затем декодировать, но не работать.

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

+1

Вы можете попробовать [Сериализация объектов PHP] (http://php.net/manual/en/language.oop5.serialization.php) - Возможно, сериализуйте объект для переноса, а затем несериализуйте его, когда он будет получен. – rdlowrey

+1

JSON - это путь. Покажите свой код. –

+2

Позаботьтесь о том, что, хотя сериализация является простой альтернативой, неэрициализация не лишена эксплуатационных возможностей. Другой вариант - просто передать объект в хранилище '$ _SESSION'. – mario

ответ

2

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

1

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>" 
?> 

EDIT: Если у вас есть jQuery, я рекомендую использовать jQuery.parse() для загрузки JSON. Если нет, вы можете использовать JSON.parse(), но я не знаю, совместим ли он с archai c браузерами. В любом случае с ними все в порядке (просто проверьте XSS на стороне сервера).

+0

спасибо за ваш ответ - когда я расшифровал JSON, он всегда был пуст :( – Stevanicus

+0

Это странно. Потому что этот код работает: http://pastebin.com/TFTGckZE Возможно, вы не в порядке –

Смежные вопросы