редирект со страницы js (захватив данные) на страницу php c приемом туда данные
Ниже есть место для отправки Объекта на сервер
document.getElementById('oplata1').innerHTML = '<form><input type="button" id="oplata" name="buy" value="" onClick="location.href=\'liqpay/liqpay.php\'"></form>'; document.getElementById('oplata1').onclick = function() { let massiv = Object.keys(cart); let massiv1 = Object.values(cart) let obshiyMassive = []; let x; let y; let d = 0; let summarnoe = []; for(let z = 0; massiv.length; z++){ x = massiv[z]; y = massiv1[z]; if(z == massiv.length)break summarnoe.push(y*data[x]['gsx$cost']['$t']); d += y*data[x]['gsx$cost']['$t']; obshiyMassive.push("Название: "+[data[x]['gsx$name']['$t'],"Код: "+data[x]['gsx$articul']['$t'],"Цена: "+data[x]['gsx$cost']['$t']+"гр","Колличество: "+y+"шт","Сумма: "+y*data[x]['gsx$cost']['$t']+"гр"]+"."); } obshiyMassive.push("Общая сумма заказа: "+[d]+"гр"); if(obshiyMassive){ тут написать код отправки объекта (obshiyMassive) на файл liqpay/liqpqy.php и там принять и получить данные с объекта } } |
А зачем вам изобретать кнопку со скриптом на отправку, когда это поведение по умолчанию у формы?
А зачем вам писать всё в одну длинную строку, когда существует строка-шаблон? Вы можете называть переменные названиями на русском языке, если вы хотите писать на английском языке, то почему бы не заглянуть в словарь? Вот вам новые слова, которые нужно выучить и выяснить, что они значат...
Цитата:
fetch("liqpay.liqpqy.php", { method: "POST", body: "строка с вашими данными" }); Почему вам нужно отправлять форму таким способом, через скрипт? Может можно сразу сделать HTML-форму и она сама будет отправляться на сервер... а там только данные принять? |
я пробовал у меня active неработает на index.php незнаю почему
|
приходится выносить в отдельный файл там работает
|
а объект передать в формате json?
|
Если подробнее:
http://korzinka.byethost9.com/ ccылка на сайт нажмите купить товар Дальше прейдите в корзину и там будет кнопка оплатить От формы я предею данные о пользователе и мне нужно объектом передать данные о товаре собранные в переменную obshiyMassive указаной в примере пробовал с помощью Аjax показало статуc 200 отправило но когда хотел принять данные в liqpay.php показало NULL |
let json = JSON.stringify(obshiyMassive); if(obshiyMassive){ fetch("liqpay/liqpqy.php", { method: "POST", body: json }); } отправил вашим способом принимал на стороне liqpay.php так <?php $data = json_decode($_POST['body'], true); var_dump($data); ?> } вардамп показал NULL |
если еще точнее я принимаю эти данные в файл liqpay.php и далее подставляю в форму в этом же файле и клиент оплачивает выбранные товары нажимая тут же кнопку оплатить и переходит на систему liqpay видя то что он заказал (этот заказ и находится в этом принимаемом объекте переданом из js файла) - проблема только принять вот прошу разобратся неполучается
|
Цитата:
<?php $str = file_get_contents('php://input'); $data = json_decode($str); header('Content-Type: application/json; charset=utf-8'); echo json_encode($data); |
Цитата:
|
попробую спасибо за ответы
|
Это неработает снова NULL
fetch("liqpay/liqpqy.php", { method: "POST", body: 'body='+json }); <?php $data = json_decode($_POST['body'], true); var_dump($data); echo "</br></br></br>";?> |
На этот вариант выдало такую ошибку
<?php $str = file_get_contents('php://input'); $data = json_decode($str); header('Content-Type: application/json; charset=utf-8'); echo json_encode($data); ?> Warning: Cannot modify header information - headers already sent by (output started at W:\home\korzinka\www\liqpay\liqpay.php:1) in W:\home\korzinka\www\liqpay\liqpay.php on line 6 |
Удалите тогда это!
Цитата:
Цитата:
Цитата:
Цитата:
По сути дела вы воруете деньги у посетителей! Картинки можно уменьшить до необходимо размера! Зачем вам 1300 пикселей, если оно помещается в 150 пикселей? Даже если вы хотите для retina экранов, то можно уместиться в 300 пикселей! Где прогресс-бар который указывает на то, сколько ещё ждать? Если вы скачиваете описание товаров размером 4МБ, то вы обязаны показывать прогресс-бар, поскольку иначе оно выглядит, как-будто бы больше ничего и не произойдёт! Вы должны показывать реальный прогресс загрузки! Может вам стоит из JSON удалить всю лишнюю мета-информацию? Может вам стоит посмотреть в сторону CSV-формата? Или даже бинарный формат? И я так подозреваю, что у большинства людей вкладка просто улетит и не вернётся! Вместо того, чтобы дёргать всё время DOM, примерно так... var data = []; for(var i = 0; i < data.length; i++) { document.getElementById("app").innerHTML += "<section>" + data[i] + "</section>"; } Лучше сначала составить, что надо, и только потом вставить в DOM... var data = [], html = []; for(var i = 0; i < data.length; i++) { html.push("<section>" + data[i] + "</section>"); } document.getElementById("app").innerHTML = html.join(""); |
<?php
$str = file_get_contents('php://input'); $data = json_decode($str); header('Content-Type: application/json; charset=utf-8'); echo json_encode($data); Warning: Cannot modify header information - headers already sent by (output started at W:\home\korzinka\www\liqpay\liqpay.php:1) in W:\home\korzinka\www\liqpay\liqpay.php on line 6 |
механизм оплаты налажу и займусь загрузками и подгрузками для ускорения спасибо за описания проблем
|
Цитата:
<?php $str = file_get_contents('php://input'); $data = json_decode($str); echo json_encode($data); Отправлять так fetch("liqpay/liqpqy.php", { method: "POST", body: json }); |
Ответ null
let json = JSON.stringify(obshiyMassive); if(obshiyMassive){ fetch("liqpay/liqpqy.php", { method: "POST", body: json }); ; } <?php $str = file_get_contents('php://input'); $data = json_decode($str); echo json_encode($data); ?> |
fetch("liqpay/liqpqy.php", { method: "POST", body: json });
|
пробую
|
до редиректа выдает
POST http://korzinka/liqpay/liqpqy.php 404 (Not Found) |
а там уже null
|
до редиректа
POST http://korzinka/liqpay/liqpqy.php 404 (Not Found) document.getElementById.onclick @ shop.js:238 на стороне liqpay.php NULL |
Вообще-то у вас этот адрес http://korzinka.byethost9.com/liqpay/liqpay.php и он ещё что-то содержит?
Я не знаю, что вы там понаписали, но это выводит то, что прислали... <?php echo file_get_contents('php://input'); И вообще-то я проверял те PHP-скрипты, которые до этого присылал... очевидно, вы что-то сильно изменили в них... |
Это код для обработки принятых данных и перехода на сайт приема платежей сюда и должны подставлятся те данные он ниже пока его не обрабатываю сам код рабочий но нужно эти данные по заказу клиента сюда принять и далее подставлю их здесь раскидаю(чет немогу передать)
<?php echo file_get_contents('php://input'); echo "</br></br>"; ?> kodyTovara = ''; $namePlusKodTov = ''; $summa = 0; $colichestvo = 0; foreach ($data['cart'] as $key => $value){ $colichestvo += $value['count']; $summa += $value['count']*$value['cost']; $namePlusKodTov += $value['name']." ".$value['articul'].","; $kodyTovara += $value['articul'].","; } $sum = $summa; $nameKodTovara = $namePlusKodTov; $kodTovara = $kodyTovara; $public_key = "sandbox_i1119407228"; $private_key = ""; $json_string = '{"public_key":"'.$public_key.'","version":"3","action":"pay","amount":"'.$sum.'","currency":"UAH","description":"'.$nameKodTovara.'","order_id":"'.$kodTovara.'"}'; $data = base64_encode($json_string); $sign_string = $private_key.$data.$private_key; $signature = base64_encode(sha1($sign_string, true)); <form method="POST" accept-charset="utf-8" action="https://www.liqpay.ua/api/3/checkout"> <input type="hidden" name="data" value="<?=$data?>"/> <input type="hidden" name="signature" value="<?=$signature?>" /> <button name="buy" style="border: none !important; display:inline-block !important;text-align: center !important;padding: 7px 20px !important; color: #fff !important; font-size:16px !important; font-weight: 600 !important; font-family:OpenSans, sans-serif; cursor: pointer !important; border-radius: 2px !important; background: rgb(122,183,43) !important;"onmouseover="this.style.opacity='0.5';" onmouseout="this.style.opacity='1';"> <img src="https://static.liqpay.ua/buttons/logo-small.png" name="btn_text" style="margin-right: 7px !important; vertical-align: middle !important;"/> <span id="oplata" style="vertical-align:middle; !important"></span> </button> </form> |
echo file_get_contents('php://input');
ничего не выводит он пуст http://korzinka/liqpay/liqpqy.php да извеняюсь это на локальном сервере пробовал вот это правильный адрес [url]http://korzinka.byethost9.com/liqpay/liqpay.php[/url] результат тот же null проверял |
А самое главное вот в зависимости от выбраного заказа сформирована строка json
["Название: Бананка Duo,Код: 5000294,Цена: 189гр,Колличество: 1шт,Сумма: 189гр.","Название: Рюкзак Urban,Код: 5000290,Цена: 519гр,Колличество: 2шт,Сумма: 1038гр.","Общая сумма заказа: 1227гр"] Далее следует ошибка это до редиректа на liqpay.php shop.js:238 POST http://korzinka.byethost9.com/liqpay/liqpqy.php 404 (Not Found) document.getElementById.onclick @ shop.js:238 вот строка с ошибкой fetch("liqpay/liqpqy.php",{method: "POST", body: json}); |
Цитата:
fetch("http://korzinka.byethost9.com/liqpay/liqpay.php?i=1", { method: "POST", body: JSON.stringify({ id: 60 }) }).then(r => r.text()).then(alert); Цитата:
Цитата:
Цитата:
fetch("liqpay/liqpqy.php",{method: "POST", body: json}); |
cмотрю
|
возможно при редиректе очищается $_POST
|
алерт выскочил про подтверждение {id:60} вижу в нем
|
Делал так
document.getElementById('oplata1').innerHTML = '<form><input type="button" id="oplata" name="buy" value="" onClick="location.href=\'liqpay/liqpay.php?i=1\'"></form>'; fetch("liqpay/liqpay.php?i=1", { method: "POST", body: JSON.stringify({ id: 60 }) }).then(r => r.text()).then(alert); |
очищу liqpay.php от лишнего кода для чистоты процесса
|
и как правильно принять этот код на стороне сервера ?
В файл liqpay.php и посмотреть его в echo? |
Цитата:
|
так это и есть суть созданой темы
|
Цитата:
<?php $str = file_get_contents('php://input'); $data = json_decode($str); // здесь вы можете работать с разобранными данными $data header('Content-Type: application/json; charset=utf-8'); echo json_encode($data); // или что-то другое ?>ну я думаю теперь понятно вам... |
ответ null
опишите свой вариант вашего вышеизложеного кода отправки как вывести вашу строку |
Что, совсем никак? Вот...
fetch("http://korzinka.byethost9.com/liqpay/liqpay.php", { method: "POST", body: JSON.stringify({ id: 60 }) }) .then(response => response.json()) .then(data => { alert(data.id); }); Цитата:
|
так на стороне сервера как ваш код принять? я непонимаю
|
Часовой пояс GMT +3, время: 03:10. |