Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.04.2016, 18:07
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

json javascript to php
Я хочу передать массив в файл обработчик который в свою очередь будет отправлять почту
в php я получаю этот массив
$products=$_SESSION['cart']->get_products();

function ajax_post(){
    // Create our XMLHttpRequest object
    var hr = new XMLHttpRequest();
    // Create some variables we need to send to our PHP file
    var url = "/server/mail.php";
	var fn = <?php echo json_encode($products);?>;
    var ln = document.getElementById("mymail").value ;
    var vars = "firstarray="+fn+"&email="+ln;
    hr.open("POST", url, true);
    // Set content type header information for sending url encoded variables in the request
    hr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
    // Access the onreadystatechange event for the XMLHttpRequest object
    hr.onreadystatechange = function() {
	    if(hr.readyState == 4 && hr.status == 200) {
		    var return_data = hr.responseText;
			/* document.getElementById("status").innerHTML = return_data; */
	    }
    }
    // Send the data to PHP now... and wait for response to update the status div
    hr.send(fn); // Actually execute the request
    /* document.getElementById("status").innerHTML = "processing..."; */
}

почему я в обработчике не вижу json хотя передаю его, массив есть
принимаю так
print_r($_POST);
Ответить с цитированием
  #2 (permalink)  
Старый 13.04.2016, 18:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А зачем уже имея на сервере список продуктов, загонять их на клиента - <?php echo json_encode($products);?>, чтоб получив его, использовать опять таки сервером? Что нельзя просто отослать подтверждение или еще что-то, и получив $_SESSION['cart'], использовать для почтового сообщения?
Ответить с цитированием
  #3 (permalink)  
Старый 13.04.2016, 18:37
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

дело в том что сессия есть но мне по событию надо с ней произвести действия
Ответить с цитированием
  #4 (permalink)  
Старый 13.04.2016, 18:51
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

array(2) {
  ["firstarray"]=>
  string(15) "[object Object]"
  ["email"]=>
  string(19) "imediasun@gmail.com"
}


тут я получаю вот такой массив но он не реагирует на $json = json_decode($_POST["firstarray"]);
Ответить с цитированием
  #5 (permalink)  
Старый 14.04.2016, 01:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от imedia
дело в том что сессия есть но мне по событию надо с ней произвести действия
А запрос пользователя на сохранение или еще чего-то, это что не событие? Не занимайтесь ерундой, корзина на сервере, любой запрос над операцией с нею вы же как-то обрабатываете, то есть по некому имени запрашиваемого параметра добавляете/удаляете товары в ней. А что такое оправить почту связанную с корзиной? Ну пусть оформление заказа, пришел в этом случае от пользователя параметр с именем например sale - получили содержимое корзины, оформили заказ, отправили почту. Гонять для этого корзину на клиента, для того чтобы отправить ее почтой с сервера, даже слов не подобать как это назвать можно.
Ответить с цитированием
  #6 (permalink)  
Старый 14.04.2016, 10:42
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

Вся суть в том что заказчик захотел по событию закрытия окна браузера слать на мыло сохранение корзины
Ответить с цитированием
  #7 (permalink)  
Старый 14.04.2016, 13:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от imedia
суть в том что заказчик захотел по событию закрытия окна браузера
И что, это есть основание гонять товары корзины между сервером и клиентнтом?
При закрытии браузера можно отослать серверу параметр hr.send(closed=1); и знать на сервере, что нужно извлечь товары из корзины и отправить их почтой.

Туда сюда гоняют товары в том случае, если опасаются, что сессия умрет и с ней корзина. Но в этом случае нужно не опасаться, а иметь корзину не сессионную. Корзину на сервер нужно слать только в том случае, если она полностью находится на клиенте, например в локальном хранилище.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование html кода средствами php или javascript? rosolovsky AJAX и COMET 2 16.06.2015 10:18
JavaScript - Websockets - PHP Camad AJAX и COMET 8 21.09.2014 01:20
Приглашаем web-программистов (php, MySQL, Javascript). smithandpartners Работа 2 18.08.2012 21:51
php + javascript, проверка капчи zhuzha Общие вопросы Javascript 10 02.06.2010 13:30
Json и PHP spar AJAX и COMET 7 30.10.2008 20:11