Возникли проблемы с созданием экземпляров объектов в пользовательской корзине PHP и Ajax - PullRequest
0 голосов
/ 14 апреля 2010

Я впервые играю как с ajax, так и с объектами, поэтому, пожалуйста, будьте осторожны со мной

У меня есть 3 страницы, которые составляют корзину тестера.

1) страница с кнопками «добавить», «удалить» и кодом ajax для вызова функций PHP на странице 2. это настоящая страница пользователя с выводом HTML.

2) страница с вызовами функций корзины PHP, получает запросы $ _GET от ajax на странице 1 и вызывает функции объекта корзины со страницы 3, возвращает результаты на страницу 1.

3) страница с определением объекта корзины.

Вот проблема, я думаю, у меня возникла. В настоящее время у меня есть «session_start ()» на страницах 1 и 2, а определение корзины (страница 3) на страницах 1 и 2. Я определяю только «$ _SESSION [cart] = new Cart» на странице 2. Однако это выглядит как каждый раз, когда я нажимаю на функцию ajax (например, каждый раз, когда pg 2 перезагружается), создается впечатление, что она переписывает $ _SESSION ['cart'] снова, поэтому он всегда пуст при каждом новом клике (даже если он отображает результаты этого клика)

Однако, если я не определяю «$ _SESSION [корзина] = новая корзина» на стр. 2, я получаю ошибку:

Неустранимая ошибка: main () [function.main]: Скрипт пытался выполнить метод или получить доступ к собственности неполной объект. Пожалуйста, убедитесь, что класс определение "Корзина" объект, который вы пытаетесь оперировать был загружен до получения unserialize () вызывается или предоставляет __autoload () функция для загрузки определения класса в /home3/foundloc/public_html/booka/carti.php по линии 17

Есть предложения? Как я могу прекратить повторное создание своей корзины каждый раз, когда моя страница 2 (страница функции php cart) вызывается ajax?

Ответы [ 2 ]

0 голосов
/ 14 апреля 2010

На основании вашего комментария к alex 'answer : вам нужно включить определение класса Cart, прежде чем вы позвоните session_start().

Видите ли, когда вы вызываете session_start(), данные сеанса не сериализуются и помещаются в глобальный хэш $_SESSION. Для этого ему нужно заранее определить внешние классы.

0 голосов
/ 14 апреля 2010

Не могли бы вы сделать это?

session_start();
if ( ! isset($_SESSION['cart'])) {
    $_SESSION['cart']= new Cart;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...