Saya mencari solusi sederhana untuk memanggil fungsi PHP hanya ketika tag- diklik.
PHP:
function removeday() { ... }
HTML:
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
UPDATE: kode html dan PHP ada di file PHP yang sama
javascript
php
ajax
onclick
Mike
sumber
sumber
<a role="button" href="?action=removeday" class="debatebtn">Delete</a>
tempat tindakan ditangkap dan menjalankan fungsi removeay () yang mirip denganif($action == 'removeday'){ removeday(); }
. Saya tahu ini terlambat, tetapi saya pikir ini masih dapat membantu seseorang dengan masalah ini. C§Jawaban:
Pertama, pahami bahwa Anda memiliki tiga bahasa yang bekerja bersama:
PHP: Ini hanya berjalan oleh server dan menanggapi permintaan seperti mengklik tautan (GET) atau mengirimkan formulir (POST).
HTML & JavaScript: Ini hanya berjalan di browser seseorang (tidak termasuk NodeJS).
Saya berasumsi file Anda terlihat seperti ini:
<!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>
Karena PHP hanya merespon permintaan (GET, POST, PUT, PATCH, dan DELETE melalui $ _REQUEST), ini adalah bagaimana Anda harus menjalankan fungsi PHP meskipun mereka berada dalam file yang sama. Ini memberi Anda tingkat keamanan, "Haruskah saya menjalankan skrip ini untuk pengguna ini atau tidak?".
Jika tidak ingin memuat ulang halaman, Anda dapat membuat permintaan ke PHP tanpa menyegarkan melalui metode yang disebut Asynchronous JavaScript and XML (AJAX).
Itu adalah sesuatu yang bisa Anda cari di YouTube. Cari saja "jquery ajax"
Saya merekomendasikan Laravel kepada siapa pun yang baru untuk memulai dengan benar: http://laravel.com/
sumber
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).
Yah dia memang termasukonclick
dalam pertanyaan, jadi cukup jelas tujuannya adalah untuk melakukan tindakan tanpa penyegaran. ¬_¬Di javascript, buat fungsi ajax,
function myAjax() { $.ajax({ type: "POST", url: 'your_url/ajax.php', data:{action:'call_this'}, success:function(html) { alert(html); } }); }
Kemudian panggil dari html,
<a href="" onclick="myAjax()" class="deletebtn">Delete</a>
Dan di ajax.php Anda,
if($_POST['action'] == 'call_this') { // call removeday() here }
sumber
type
harus digunakan di jQuery sebelum 1.9.0, sedangkanmethod
merupakan alias dan harus digunakan pada versi yang lebih baru.Ini dapat dilakukan dan dengan php yang agak sederhana jika ini adalah tombol Anda
<input type="submit" name="submit>
dan ini adalah kode php Anda
if(isset($_POST["submit"])) { php code here }
kode dipanggil saat submit get diposting yang terjadi saat tombol diklik.
sumber
Anda harus melakukan ini melalui AJAX . SAYA SANGAT merekomendasikan Anda menggunakan jQuery untuk membuat ini lebih mudah bagi Anda ....
$("#idOfElement").on('click', function(){ $.ajax({ url: 'pathToPhpFile.php', dataType: 'json', success: function(data){ //data returned from php } }); )};
http://api.jquery.com/jQuery.ajax/
sumber
Solusi tanpa memuat ulang halaman
<?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>
sumber
Coba lakukan sesuatu seperti ini:
<!--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>
sumber
Berikut ini alternatif dengan AJAX tetapi tanpa jQuery, hanya JavaScript biasa:
Tambahkan ini ke halaman php pertama / utama, tempat Anda ingin memanggil tindakan, tetapi ubah dari
a
tag potensial (hyperlink) kebutton
elemen, sehingga tidak diklik oleh bot atau aplikasi berbahaya (atau apa pun).<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>
Ketika
button
diklik,onclick
gunakan fungsi javascript head untuk mengirim$sendingValue
melalui ajax ke halaman-php lain, seperti banyak contoh sebelumnya. Halamanajax-php-page.php
lain`` memeriksa nilai GET dan kembali denganprint_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..."); } ?>
Tanggapan dari
print_r
kemudian dikembalikan dan ditampilkan dengandocument.getElementById("results").innerHTML += this.responseText;
The
+=
populates dan menambah elemen html yang ada, menghapus+
hanya update dan mengganti isi yang ada dari htmlp
elemen"results"
.sumber
Ini adalah cara yang paling mudah. Jika formulir dikirim melalui pos, lakukan fungsi php. Perhatikan bahwa jika Anda ingin menjalankan fungsi secara asinkron (tanpa perlu memuat ulang halaman), Anda memerlukan AJAX.
<form method="post"> <button name="test">test</button> </form> <?php if(isset($_POST['test'])){ //do php stuff } ?>
sumber
Note that if you want to perform function asynchronously (without the need to reload the page), then you'll need AJAX.
Nah ituonclick
akan menunjukkan bahwa itulah yang dia inginkan. ¬_¬Coba ini akan bekerja dengan baik.
<script> function echoHello(){ alert("<?PHP hello(); ?>"); } </script> <?PHP FUNCTION hello(){ echo "Call php function on onclick event."; } ?> <button onclick="echoHello()">Say Hello</button>
sumber