Я ищу простое решение для вызова функции PHP только при щелчке по тегу .
PHP:
function removeday() { ... }
HTML:
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
ОБНОВЛЕНИЕ: код html и PHP находятся в одном файле PHP
javascript
php
ajax
onclick
Майк
источник
источник
<a role="button" href="?action=removeday" class="debatebtn">Delete</a>
место захвата действия и запускаете функцию removeay (), аналогичнуюif($action == 'removeday'){ removeday(); }
. Я знаю, что это поздно, но я полагаю, что это все еще может помочь кому-то с этой проблемой. C§Ответы:
Во-первых, поймите, что у вас есть три языка, работающих вместе:
PHP: он запускается только сервером и отвечает на запросы, такие как щелчок по ссылке (GET) или отправка формы (POST).
HTML и JavaScript: он работает только в чьем-то браузере (кроме NodeJS).
Я предполагаю, что ваш файл выглядит примерно так:
<!DOCTYPE HTML> <html> <?php function runMyFunction() { echo 'I just ran a php function'; } if (isset($_GET['hello'])) { runMyFunction(); } ?> Hello there! <a href='index.php?hello=true'>Run PHP Function</a> </html>
Поскольку PHP отвечает только на запросы (GET, POST, PUT, PATCH и DELETE через $ _REQUEST), именно так вы должны запускать функцию PHP, даже если они находятся в одном файле. Это дает вам уровень безопасности: «Следует ли мне запускать этот сценарий для этого пользователя или нет?».
Если вы не хотите обновлять страницу, вы можете сделать запрос к PHP без обновления с помощью метода под названием Asynchronous JavaScript and XML (AJAX).
Это то, что вы можете найти на YouTube. Просто выполните поиск "jquery ajax"
Я рекомендую Laravel всем, кто новичок, чтобы начать правильно: http://laravel.com/
источник
If you don't want to refresh the page, you can make a request to PHP without refreshing via a method called Asynchronous JavaScript and XML (AJAX).
Что ж, он включилonclick
в вопрос, так что довольно ясно, что цель - выполнить действие без обновления. ¬_¬В javascript создайте функцию ajax,
function myAjax() { $.ajax({ type: "POST", url: 'your_url/ajax.php', data:{action:'call_this'}, success:function(html) { alert(html); } }); }
Затем позвоните из html,
<a href="" onclick="myAjax()" class="deletebtn">Delete</a>
И в вашем ajax.php,
if($_POST['action'] == 'call_this') { // call removeday() here }
источник
type
следует использовать в jQuery ранее, чем 1.9.0, аmethod
это псевдоним, и его следует использовать в более новых версиях.Это можно сделать и с помощью довольно простого php, если это ваша кнопка
<input type="submit" name="submit>
и это ваш PHP-код
if(isset($_POST["submit"])) { php code here }
код get вызывается при публикации submit get, что происходит при нажатии кнопки.
источник
Вам нужно будет сделать это через AJAX . Я НАСТОЯТЕЛЬНО рекомендую вам использовать jQuery, чтобы вам было проще ...
$("#idOfElement").on('click', function(){ $.ajax({ url: 'pathToPhpFile.php', dataType: 'json', success: function(data){ //data returned from php } }); )};
http://api.jquery.com/jQuery.ajax/
источник
Решение без перезагрузки страницы
<?php function removeday() { echo 'Day removed'; } if (isset($_GET['remove'])) { return removeday(); } ?> <!DOCTYPE html><html><title>Days</title><body> <a href="" onclick="removeday(event)" class="deletebtn">Delete</a> <script> async function removeday(e) { e.preventDefault(); document.body.innerHTML+= '<br>'+ await(await fetch('?remove=1')).text(); } </script> </body></html>
источник
Попробуйте сделать что-то вроде этого:
<!--Include jQuery--> <script type="text/javascript" src="jquery.min.js"></script> <script type="text/javascript"> function doSomething() { $.get("somepage.php"); return false; } </script> <a href="#" onclick="doSomething();">Click Me!</a>
источник
Вот альтернатива с AJAX, но без jQuery, только с обычным JavaScript:
Добавьте это на первую / главную страницу php, с которой вы хотите вызвать действие, но измените его с потенциального
a
тега (гиперссылки) наbutton
элемент, чтобы на него не нажимали никакие боты или вредоносные приложения (или что-то еще).<head> <script> // function invoking ajax with pure javascript, no jquery required. function myFunction(value_myfunction) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("results").innerHTML += this.responseText; // note '+=', adds result to the existing paragraph, remove the '+' to replace. } }; xmlhttp.open("GET", "ajax-php-page.php?sendValue=" + value_myfunction, true); xmlhttp.send(); } </script> </head> <body> <?php $sendingValue = "thevalue"; // value to send to ajax php page. ?> <!-- using button instead of hyperlink (a) --> <button type="button" onclick="value_myfunction('<?php echo $sendingValue; ?>');">Click to send value</button> <h4>Responses from ajax-php-page.php:</h4> <p id="results"></p> <!-- the ajax javascript enters returned GET values here --> </body>
При
button
щелчкеonclick
по кнопке используется функция javascript заголовка для отправки$sendingValue
через ajax на другую php-страницу, как и во многих примерах до этого. Другая страницаajax-php-page.php
проверяет значение GET и возвращаетprint_r
:<?php $incoming = $_GET['sendValue']; if( isset( $incoming ) ) { print_r("ajax-php-page.php recieved this: " . "$incoming" . "<br>"); } else { print_r("The request didn´t pass correctly through the GET..."); } ?>
print_r
Затем возвращается ответ от и отображается сdocument.getElementById("results").innerHTML += this.responseText;
В
+=
заселяет и добавляет к существующим HTML элементов, удаляя+
только обновления и заменяет существующие содержимое HTMLp
элемента"results"
.источник
Это самый простой способ. Если форма отправлена по почте, выполните функцию php. Обратите внимание: если вы хотите выполнять функцию асинхронно (без необходимости перезагружать страницу), вам понадобится AJAX.
<form method="post"> <button name="test">test</button> </form> <?php if(isset($_POST['test'])){ //do php stuff } ?>
источник
Note that if you want to perform function asynchronously (without the need to reload the page), then you'll need AJAX.
Что ж,onclick
это означает, что он именно этого хочет. ¬_¬Попробуйте, это будет работать нормально.
<script> function echoHello(){ alert("<?PHP hello(); ?>"); } </script> <?PHP FUNCTION hello(){ echo "Call php function on onclick event."; } ?> <button onclick="echoHello()">Say Hello</button>
источник