Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.10.2020, 10:36
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Передача значения из js в php
Доброго времени суток!
Необходимо из js передать полученное значение в файл php.
Делаю так (страница просмотра заказа\bitrix\templates\test.ru-new\components\bitrix\sale.personal.order.detail\s hop\template.php):
let pay = document.querySelector('form[method=get]').action;
$(document).ready(function () {
$.ajax({
url: "/pay.php",
type: "POST",
data: {payment: pay},
success: function (data) {
alert (data);
},
error: function(){
alert ("No PHP script: ");
}
});
});

На данной странице при обновлении выводится alert c содержимым:
<pre>Array
(
)
</pre><pre>Array
(
    [payment] => https://securepayments.sberbank.ru/payment/merchants/sbersafe_cardholder/payment_ru.html?mdOrder=111111)
</pre>

На странице /pay.php $_POST пустой
Подскажите, пожалуйста, что делаю не так?
Ответить с цитированием
  #2 (permalink)  
Старый 16.10.2020, 10:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Если пустой, то откуда [payment] => https://securepayments..., и почему ответом два массива, первый из которых пустой?

Что-то вы не так обрабатываете на сервере.
Ответить с цитированием
  #3 (permalink)  
Старый 16.10.2020, 10:55
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Сообщение от laimas Посмотреть сообщение
Если пустой, то откуда [payment] => https://securepayments
- в том то и дело, что на странице просмотра заказа в alert значение выводится, а на странице pay.php $_POST пустой
Сообщение от laimas
и почему ответом два массива
- с этим удалось разобраться. Потому что было data: {payment: pay}, а нужно data: {"payment": pay}, т.е. из-за ковычек
На данный момент в alert на странице заказа выводится следующее:
<pre>Array
(
    [payment] => https://securepayments.sberbank.ru/payment/merchants/sbersafe_cardholder/payment_ru.html?mdOrder=111111
)
</pre>

Сообщение от laimas
Что-то вы не так обрабатываете на сервере.
- а вот что именно, не могу сообразить.

laimas, в файле (где получаю значение в js) возможно ли передать значение в php?
Ответить с цитированием
  #4 (permalink)  
Старый 16.10.2020, 11:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от _marisha
Потому что было data: {payment: pay}, а нужно data: {"payment": pay}
Без разницы, свойство объекта вы можете писать и без кавычек, на сервер все равно придет один запрос с одними и теми же данными. На клиенте у вас нет ошибок, а что вы на сервере делаете нам не известно.

И вы не значение JS передаете, просто некое значение, получаете вы его посредством JS, это да.
Ответить с цитированием
  #5 (permalink)  
Старый 16.10.2020, 11:37
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Сообщение от laimas
Без разницы, свойство объекта вы можете писать и без кавычек, на сервер все равно придет один запрос с одними и теми же данными
- тем не менее, если сделать с кавычками, то пустой массив в ответе пропадает

Сообщение от laimas
И вы не значение JS передаете, просто некое значение, получаете вы его посредством JS, это да.
- верно

Что могу делать не так? В одном файле получаю некое значение посредством JS, передаю в POST. В другом файле просто хочу вывести данное значение, а массив POST пустой
Ответить с цитированием
  #6 (permalink)  
Старый 16.10.2020, 11:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от _marisha
тем не менее, если сделать с кавычками, то пустой массив в ответе пропадает
Покажите код сервера, что-то вы не о том, что должно быть. Сохраните это под любым именем и запустите на сервере. Если при этом на данные где имя свойства в кавычках ответом будет два массива, можете бросить в меня камень.

<?
if($_POST) {
    exit(print_r($_POST, 1));
}
?>
<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<style>
</style>
<script type="text/javascript">
$(function() {
    var data = [
        {name: 1},
        {"name": 1}
    ];
    
    $('button').click(function() {
        $.post(location, data[this.value], function(d) {
            alert(d)
        })
    })
});
</script>
</head>
<body>
<button value="0">GO 1</button>
<button value="1">GO 2</button>
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 16.10.2020, 11:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Два массива вы можете получить только в том случае, если на сервере бардак в коде или ваш код на клиенте по какой-то причине выполняется дважды и ответ вы смотрите в консоли. Но и в этом случае в консоли будет видно, что это ответ на два запроса, а не на один.
Ответить с цитированием
  #8 (permalink)  
Старый 16.10.2020, 12:04
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Сообщение от laimas
Покажите код сервера, что-то вы не о том, что должно быть. Сохраните это под любым именем и запустите на сервере. Если при этом на данные где имя свойства в кавычках ответом будет два массива, можете бросить в меня камень.
- охотно верю

Удалены лишние строки в коде, после чего результат приходит один
Ответить с цитированием
  #9 (permalink)  
Старый 16.10.2020, 12:06
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

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

Да, это простой код, отправляющий одно и то же, с разницей только в написании свойства объекта. На сервер оно будет отправлено как параметр запроса (ключ) и без всяких кавычек в любом из случаев! Сервер приняв запрос вернет эти данные.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача массива из php в гистограмму js Sling AJAX и COMET 9 09.02.2016 16:15
Передача данных PHP -> JS TITO Events/DOM/Window 6 09.01.2014 22:34
Передача массива из JS в PHP biohan AJAX и COMET 4 15.11.2012 18:24
Как вывести содержимое PHP файла с помощью JS? pavdin Серверные языки и технологии 6 22.12.2010 14:16
Не получается передать переменную из JS в PHP Lion_astana AJAX и COMET 2 23.11.2010 17:23