Я работаю над проектом PHP Laravel, в соответствии с которым, когда пользователь нажимает кнопку на веб-сайте, я выполняю некоторую фоновую задачу, используя AJAX для бэкэнда PHP, в результате чего я инициирую вызов платежного шлюза, когда пользователь платит через его / еетелефон ,,, я проверяю статус платежа (где 1 означает, что оплачено, 0 означает, что не оплачено), и если статус равен 1, я перенаправляю пользователя на страницу успеха.
В настоящее время я использую AJAX для публикации данныхот внешнего интерфейса до внутреннего, и я хочу периодически публиковать данные через 5 секунд (когда я даю пользователю некоторое время, чтобы заплатить, прежде чем обратиться к API, чтобы узнать, изменился ли статус на 1, затем перенаправить пользователя).
Пытаюсь использовать метод setTimeout в JavaScript и dd () данные из контроллера, который выдает данные только один раз, но не выдает их через 5 секунд
AJAX-код для отправки данных на серверчерез 5 секунд
$('.mpesa').on('click', function () {
// run the first time; all subsequent calls will take care of themselves
setTimeout(executeQuery, 5000);
});
function executeQuery() {
alert('clicked');
//Adds Class to the page when it loads
$('.PAY').addClass("loading");
//Gets the MPESA type
var type = $('.mpesa').prop('id');
var quote = $('#quote').val();
var phone = $('#phone').val();
//Converts to a JSON object
var type ={
'type': type,
'quote' : quote,
'phone' : phone,
};
console.log(type);
$.ajax({
//Contains controller of payment
type: 'POST',
url: 'paymentFinal',
data: JSON.stringify(type),
contentType: 'application/json',
dataType: "json",
success: function success(response) {
console.log(response);
},
error: function error(data) {
console.log(data);
}
});
}
//End AJAX call
Файл контроллера вызывается
public
function payFinal(Request $request)
{
dd($request->all());
}
Обновлен код AJAX
$('.mpesa').on('click', function () {
setInterval(function() {
alert('clicked');
//Gets the MPESA type
var type = $('.mpesa').prop('id');
var quote = $('#quote').val();
var phone = $('#phone').val();
//Converts to a JSON object
var type ={
'type': type,
'quote' : quote,
'phone' : phone,
};
console.log(type);
$.ajax({
//Contains controller of payment
type: 'POST',
url: 'paymentFinal',
data: JSON.stringify(type),
contentType: 'application/json',
dataType: "json",
success: function success(response) {
if(response) {
window.location.href="success";
}
},
error: function error(data) {
console.log(data);
}
});
}, 15000); // Execute every 15 seconds
});