Когда пользователь нажимает кнопку претензии, я хочу запускать функцию 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¤cy=$shortcurrency&amount=$doge ");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
}
Результатом должна быть функция payout(), которая должна отправлять на этот кошелек $ каждые 5 секунд.
@Devsi Odedra, не могли бы вы привести пример вызова ajax? лайкните ссылку, чтобы узнать
@Элвин stackoverflow.com/questions/39341901/…
Пожалуйста, проверьте консоль браузера на наличие ошибок. JS не может выполнять в нем php-функции. Сделайте вызов AJAX (XMLHttpRequest developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) на сервер для выполнения процесса.
Во-первых, вам нужно создать один файл 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¤cy=$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/…> но когда я нажимаю на кнопку, ничего не происходит, где я пропустил?
Элвин, в случае успеха код записывает что-то в консоль вашего браузера. Нажмите F12, чтобы открыть Инструменты разработчика и просмотреть консоль. Затем нажмите кнопку на своей странице. Через мгновение вы должны увидеть либо сообщение «попытка выплаты», либо ошибку (если она как-то не удалась). P.S. если вы собираетесь начать использовать JavaScript и AJAX, инструменты разработчика — ваш лучший друг. Я предлагаю вам научиться их использовать, чтобы вы могли эффективно отлаживать свой код.
@ Элвин Я изменил код для index.html
добавленного фрагмента.
@ADyson сказал, что send () не определен. Почему он сказал, что не определяет, когда у меня есть функция для этой кнопки ниже. Мой Бог.
@JellyFish О, теперь в журнале консоли он показывает попытку выплаты каждые 3 секунды, так что это означает, что javascript и ajax выполнены успешно. Но этот php не отправляет, лол. В любом случае, спасибо. с остальным разберусь :D
Я подозреваю, что PHP, показанный выше, никогда не выполняется, поскольку он обернут в функцию, и нет ничего, что могло бы выполнять эту функцию. PHP-скрипт запустится, но не сделает ничего полезного (если только это не его небольшой образец?). Также неясно, где определяется $wallet. PHP нуждается в некоторых изменениях
зачем минусовать чувак! нужно создать файл PHP в вашей папке, а не на сервере StackOverflow. Я думаю, что каждый пользователь просто дает вам шаг для решений, не выполняющих вашу работу.
@JellyFish Я не понижаю ваш ответ, я отказываюсь от голосования, но моя репутация все еще низка, поэтому она не появляется, кто-то с более высокой репутацией дает это вам. Грустно видеть, что даже твой ответ помогает мне :(
Я тоже не проголосовал против... Я думаю, что проголосовавший против мог быть тем же человеком, который проголосовал за мой комментарий о том, что PHP немного бесполезен. В идеале полный ответ также решил бы это, но если Элвин счастлив работать над этим отдельно, то я не вижу причин, по которым ответ не должен быть принят и одобрен в целом. Это решает основной вопрос, который был поставлен, а именно, как установить связь с сервером через регулярные промежутки времени.
@ADyson Все в порядке, большое спасибо за повтор. Ты хороший человек!
вызовите ajax, и вы можете вызвать функцию php, вы не можете смешивать функцию javascript и php.