Используя объекты в Ajax называет файлы PHP

Я инстанцировал класса в моем index.php файл. Но затем я использую Ajax jQuery для вызова некоторых файлов PHP, но они не могут использовать мой объект, который я создал в index.php файл.

Как я могу заставить его работать? Поскольку я не хочу создавать новые объекты, потому что тот, который я создал, содержит все значения свойств, которые я хочу использовать.

7
задан Peter Mortensen 2 December 2010 в 00:35
поделиться

6 ответов

Используйте сессию для сохранения объекта для следующей загрузки страницы.

// Create a new object
$object = new stdClass();
$object->value = 'something';
$object->other_value = 'something else';

// Start the session
session_start();

// Save the object in the user's session
$_SESSION['object'] = $object;

Затем на следующей странице, которая загружается из AJAX

// Start the session saved from last time
session_start();

// Get the object out
$object = $_SESSION['object'];

// Prints "something"
print $object->value;

Используя сессии PHP, вы можете сохранять данные на многих страницах для определенного пользователя. Например, у каждого пользователя есть объект корзины, содержащий список товаров, которые он хочет купить. Так как вы храните эти данные только в сессии этого пользователя - каждый пользователь может иметь свой собственный объект корзины, который сохраняется на каждой странице!

16
ответ дан 6 December 2019 в 07:26
поделиться

mm, вы должны хранить в сессии, $_SESSION["someobj"] = $myobj;, и убедиться, что при вызове PHP-файла Ajax он включает в себя класс необходимых файлов, который определяет класс $myobj и любой содержащийся в нем объект.

Не могли бы вы уточнить? Я могу попробовать.

Вот как я создаю объект, а затем присваиваю его переменной сеанса:

include(whateverfilethathastheclassorincludeit.php)
$theObject = new TheObjectClass();
//do something with the object or not
$_SESSION['myobject'] = $theObject;

Вот как я получаю доступ к членам объекта в моем PHP-файле Ajax call:

include(whateverfilethathastheclassorincludeit.php)
$theObject = $_SESSION['myobject'];
//do something with the object
3
ответ дан 6 December 2019 в 07:26
поделиться

Если вы не хотите перемещать ваш объект, находящийся в index.php, попросите ajax сделать запрос на index.php, но добавьте некоторые дополнительные параметры (post/get), которые позволят вашему index.php обрабатывать его как ajax запрос и не возвращать ваш обычный вывод html web-страницы.

1
ответ дан 6 December 2019 в 07:26
поделиться

Вы не предоставили код, но я думаю, что вам нужно сделать свой инстанцированный объект глобальным для других сценариев, чтобы увидеть его, например:

$myobject = new myobject();

Теперь я хочу использовать этот объект в другом месте, вероятно, под какой-нибудь функцией или классом, или в любом месте, где он не распознается, так что я сделаю этот объект глобальным с ключевым словом global, и он будет доступен там же:

global $myobject;

Как только у вас есть объект, вы можете поместить его в сессию, а затем использовать его в файле сценария Ajax.

1
ответ дан 6 December 2019 в 07:26
поделиться

Другой вариант, если вы не хотите использовать сеансы, - сериализовать ваш объект и отправьте его через значение $ _POST в вызове AJAX. Не самый элегантный способ сделать это, но хорошая альтернатива, если вы не хотите использовать сеансы.

См. Сериализация объекта в документации для получения дополнительной информации.

3
ответ дан 6 December 2019 в 07:26
поделиться

Как предлагали другие, $ _ SESSION - это стандартный способ сделать это, фактически, это было одной из причин того, что сеансы были изобретены для решения. Другие варианты, то есть сериализация объекта, зависят от того, что клиентская сторона удерживает объект и затем возвращает его без изменений. В зависимости от данных в объекте это не лучшее решение, так как а) объект может включать информацию, которая не должна быть доступна на стороне клиента по соображениям безопасности, и б) вам нужно будет проверить объект после его получения.

Тем не менее, и если вы все еще хотите использовать объект на стороне клиента, то JSON - это вариант для сериализации данных объекта, см. Функции JSON в PHP .

0
ответ дан 6 December 2019 в 07:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: