#php #ajax
Вопрос:
У меня есть платежная форма, сгенерированная платежным процессором, которую мне нужно интегрировать, и, нажав на кнопку «Купить», пользователь переходит на внешний сайт для оплаты.
<input type="hidden" name="order_id" value="0" id="crypto_orderid"> <input type="submit" value="Pay with cryptocurrency" id="buy-btn">
Таким образом, пользователь нажимает на кнопку, и jquery отправляет запрос на php, и возвращается идентификатор заказа.
Jquery
$('#buy-btn').click(function() { generate_invoice(); }); function generate_invoice() { $.ajax({ url: "./core/create-invoice.php", type: "POST", beforeSend: function() { }, success: function(res) { try { var res = JSON.parse(res); if(res.success) { $("#crypto_orderid").val(res.id); alert(res.id); console.log(res.id); } else { alert("unknown error"); } } catch (e) { } } }); }
Но идентификатор заказа не проходит, как я вижу на внешней странице, идентификатор заказа не отображается. Однако, если я сделаю это без ajax, попробуйте изменить значение поля идентификатора заказа, тогда 11 будет использоваться в качестве идентификатора заказа. Почему то же самое не работает с ajax ?
Нужно ли мне сделать еще одну кнопку, чтобы сгенерировать счет-фактуру и изменить форму ? Это нельзя сделать с помощью 1 кнопки ?
$('#buy-btn').click(function() { generate_invoice(); }); function generate_invoice() { $("#crypto_orderid").val(11); }
Комментарии:
1. Ajax-это вызов асинхронной функции. Таким образом, другие вещи можно делать, пока метод успеха ожидает вызова, когда сервер ответит. Таким образом, ваш
click
обработчик продолжает работу до завершения2.
res.id
Действительно ли имеет значение? Вероятно, лучше использовать onSubmit в форме, а не onClick, тоже3. это я сделал, чтобы предотвратить дефолт, и он напечатал значение