редирект со страницы 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, время: 10:23. |