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); |
А зачем уже имея на сервере список продуктов, загонять их на клиента - <?php echo json_encode($products);?>, чтоб получив его, использовать опять таки сервером? Что нельзя просто отослать подтверждение или еще что-то, и получив $_SESSION['cart'], использовать для почтового сообщения?
|
дело в том что сессия есть но мне по событию надо с ней произвести действия
|
array(2) {
["firstarray"]=>
string(15) "[object Object]"
["email"]=>
string(19) "imediasun@gmail.com"
}
тут я получаю вот такой массив но он не реагирует на $json = json_decode($_POST["firstarray"]); |
Цитата:
|
Вся суть в том что заказчик захотел по событию закрытия окна браузера слать на мыло сохранение корзины
|
Цитата:
При закрытии браузера можно отослать серверу параметр hr.send(closed=1); и знать на сервере, что нужно извлечь товары из корзины и отправить их почтой. Туда сюда гоняют товары в том случае, если опасаются, что сессия умрет и с ней корзина. Но в этом случае нужно не опасаться, а иметь корзину не сессионную. Корзину на сервер нужно слать только в том случае, если она полностью находится на клиенте, например в локальном хранилище. |
| Часовой пояс GMT +3, время: 04:10. |