a-tag がクリックされた場合にのみ、 PHP関数 を呼び出す簡単な解決策を探しています。
PHP:
function removeday() { ... }
HTML:
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
更新: htmlとPHPコードは同じPHPファイルにあります
まず、3つの言語が連携していることを理解してください。
PHP:サーバーによってのみ実行され、リンクのクリック(GET)やフォームの送信(POST)などの要求に応答します。
HTMLとJavaScript:誰かのブラウザ(NodeJSを除く)でのみ実行されます。
あなたのファイルは次のようになっていると思います。
<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、および$ _REQUESTを介したDELETE)にしか応答しないため、これらの関数があってもPHP関数を実行する必要があります同じファイルこれにより、「このユーザーに対してこのスクリプトを実行する必要があるかどうか」というセキュリティレベルが得られます。
ページを更新したくない場合は、Asynchronous JavaScript and XML(AJAX)と呼ばれるメソッドを使用して、更新せずにPHPにリクエストを送信できます。
それはあなたがYouTubeで調べることができるものです。 「jquery ajax」を検索するだけです。
私はLaravelを初めて始める人にはお勧めです: http://laravel.com/
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
}
_ ajax _ でこれをしなければならないでしょう。私はあなたがこれをより簡単にするためにあなたがjQueryを使うことをお勧めします....
$("#idOfElement").on('click', function(){
$.ajax({
url: 'pathToPhpFile.php',
dataType: 'json',
success: function(data){
//data returned from php
}
});
)};
これがあなたのボタンであれば、それはかなり単純なphpで行うことができます。
<input type="submit" name="submit>
これはあなたのPHPコードです
if(isset($_POST["submit"])) { php code here }
ボタンがクリックされたときに発生する送信取得時にコードが呼び出されます。
このようなことをしてみてください。
<!--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>
あなたはこのようなコードが必要です。
<?php
if ((isset($_POST['del'])))
{
//your code here
echo "DELETED";
}
?>
<form action="" method="post">
<button type="submit" name="del">Delete</button>
</form>
ページをリロードしないで解決する
<?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>
これが最も簡単な方法です。フォームがpost経由で投稿されている場合は、php機能を実行します。 (ページをリロードする必要なしに)非同期に機能を実行したい場合は、AJAXが必要になります。
<form method="post">
<button name="test">test</button>
</form>
<?php
if(isset($_POST['test'])){
//do php stuff
}
?>
これを試してくださいそれはうまくいきます。
<script>
function echoHello(){
alert("<?PHP hello(); ?>");
}
</script>
<?PHP
FUNCTION hello(){
echo "Call php function on onclick event.";
}
?>
<button onclick="echoHello()">Say Hello</button>