Попытка использовать функцию javascript для запуска запроса mysql в определенное время, когда пользователь щелкает в php

Когда пользователь нажимает кнопку претензии, я хочу запускать функцию javascript каждые 5 секунд. После того, как я создал этот код и нажал кнопку, но скрипт не работает. Я вообще не силен в javascript. Все, что я знаю, это немного php и mysql.

Когда пользователь нажимает кнопку претензии, функция send() должна вызывать функцию payout() и запускать эту функцию crul(), которая находится внутри функции payout(). Я не знаю, где я ошибаюсь, потому что я не очень хорошо знаю javascript.

это функция кнопки, которую я создаю. не знаю ошибся или нет.

<button onclick = "send()" class = "btn-success"><i class = "fas fa-exclamation-circle"></i> Claim <i class = "fas fa-exclamation-circle"></i></button>
<script>
function send() {
   setInterval(function(){ payout(); }, 5000);
}
</script>

Это функция payout()

function payout(){
    $sql = $conn->query("UPDATE wallets SET balance = balance - 1 WHERE wallet = '$wallet' " );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,"https://faucethub.io/api/v1/send");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,
            "api_key=$apikey&to=$wallet&currency=$shortcurrency&amount=$doge ");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $server_output = curl_exec ($ch);
    curl_close ($ch);
}

Результатом должна быть функция payout(), которая должна отправлять на этот кошелек $ каждые 5 секунд.

вызовите ajax, и вы можете вызвать функцию php, вы не можете смешивать функцию javascript и php.

Devsi Odedra 30.05.2019 08:30

@Devsi Odedra, не могли бы вы привести пример вызова ajax? лайкните ссылку, чтобы узнать

Alvin 30.05.2019 08:33

@Элвин stackoverflow.com/questions/39341901/…

Xun 30.05.2019 08:36

Пожалуйста, проверьте консоль браузера на наличие ошибок. JS не может выполнять в нем php-функции. Сделайте вызов AJAX (XMLHttpRequest developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) на сервер для выполнения процесса.

Sathishkumar Rakkiyasamy 30.05.2019 08:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во-первых, вам нужно создать один файл PHP и переместить ваш PHP payout() в файл php. во-вторых, вам нужно вызвать ajax в интервале javascript.

payout.php

//add the following code after your connection object
function payout(){
    $sql = $conn->query("UPDATE wallets SET balance = balance - 1 WHERE wallet = '$wallet' " );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,"https://faucethub.io/api/v1/send");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,
            "api_key=$apikey&to=$wallet&currency=$shortcurrency&amount=$doge ");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $server_output = curl_exec ($ch);
    curl_close ($ch);
}

index.html

<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button onclick = "send()" class = "btn-success"><i class = "fas fa-exclamation-circle"></i> Claim <i class = "fas fa-exclamation-circle"></i></button>
<script>
function send() {
	setInterval(function () {
		$.ajax({
			type: 'POST',
			url: 'payout.php',
			success: function (data) {
				console.info("payout attempt");
			},
		});
	}, 3000);
}
</script>

Мне нравится ваш ответ, я делаю еще одну страницу payout.php и вставляю эту функцию php, подключаю то, что мне нужно, в этом файле и в index.php, я также добавляю код ajax из вашего ответа, а также добавляю <script src = " ajax.googleapis.com/ajax/libs/jquery/1.11.2/…> но когда я нажимаю на кнопку, ничего не происходит, где я пропустил?

Alvin 30.05.2019 08:51

Элвин, в случае успеха код записывает что-то в консоль вашего браузера. Нажмите F12, чтобы открыть Инструменты разработчика и просмотреть консоль. Затем нажмите кнопку на своей странице. Через мгновение вы должны увидеть либо сообщение «попытка выплаты», либо ошибку (если она как-то не удалась). P.S. если вы собираетесь начать использовать JavaScript и AJAX, инструменты разработчика — ваш лучший друг. Я предлагаю вам научиться их использовать, чтобы вы могли эффективно отлаживать свой код.

ADyson 30.05.2019 08:57

@ Элвин Я изменил код для index.html добавленного фрагмента.

Paresh Barad 30.05.2019 09:01

@ADyson сказал, что send () не определен. Почему он сказал, что не определяет, когда у меня есть функция для этой кнопки ниже. Мой Бог.

Alvin 30.05.2019 09:08

@JellyFish О, теперь в журнале консоли он показывает попытку выплаты каждые 3 секунды, так что это означает, что javascript и ajax выполнены успешно. Но этот php не отправляет, лол. В любом случае, спасибо. с остальным разберусь :D

Alvin 30.05.2019 09:13

Я подозреваю, что PHP, показанный выше, никогда не выполняется, поскольку он обернут в функцию, и нет ничего, что могло бы выполнять эту функцию. PHP-скрипт запустится, но не сделает ничего полезного (если только это не его небольшой образец?). Также неясно, где определяется $wallet. PHP нуждается в некоторых изменениях

ADyson 30.05.2019 09:16

зачем минусовать чувак! нужно создать файл PHP в вашей папке, а не на сервере StackOverflow. Я думаю, что каждый пользователь просто дает вам шаг для решений, не выполняющих вашу работу.

Paresh Barad 30.05.2019 09:18

@JellyFish Я не понижаю ваш ответ, я отказываюсь от голосования, но моя репутация все еще низка, поэтому она не появляется, кто-то с более высокой репутацией дает это вам. Грустно видеть, что даже твой ответ помогает мне :(

Alvin 30.05.2019 09:53

Я тоже не проголосовал против... Я думаю, что проголосовавший против мог быть тем же человеком, который проголосовал за мой комментарий о том, что PHP немного бесполезен. В идеале полный ответ также решил бы это, но если Элвин счастлив работать над этим отдельно, то я не вижу причин, по которым ответ не должен быть принят и одобрен в целом. Это решает основной вопрос, который был поставлен, а именно, как установить связь с сервером через регулярные промежутки времени.

ADyson 30.05.2019 12:21

@ADyson Все в порядке, большое спасибо за повтор. Ты хороший человек!

Paresh Barad 30.05.2019 12:39

Другие вопросы по теме