태그 를 클릭 할 때만 PHP 함수 를 호출하는 간단한 솔루션을 찾고 있습니다.
PHP :
function removeday() { ... }
HTML :
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
업데이트 : html 및 PHP 코드가 동일한 PHP 파일에 있습니다.
태그 를 클릭 할 때만 PHP 함수 를 호출하는 간단한 솔루션을 찾고 있습니다.
PHP :
function removeday() { ... }
HTML :
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
업데이트 : html 및 PHP 코드가 동일한 PHP 파일에 있습니다.
<a role="button" href="?action=removeday" class="debatebtn">Delete</a>
액션이 잡힌 곳 을 사용 하고 if($action == 'removeday'){ 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는 요청 ($ _REQUEST를 통해 GET, POST, PUT, PATCH 및 DELETE)에만 응답하기 때문에 동일한 파일에 있더라도 PHP 함수를 실행해야합니다. 이렇게하면 "이 사용자에 대해이 스크립트를 실행해야합니까?"라는 보안 수준이 제공됩니다.
페이지를 새로 고치지 않으려면 AJAX (Asynchronous JavaScript and XML)라는 메서드를 통해 새로 고치지 않고 PHP에 요청할 수 있습니다.
그래도 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
질문에 포함 시켰기 때문에 목표는 새로 고침없이 행동을 수행하는 것임이 분명합니다. ¬_¬
자바 스크립트에서 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
1.9.0 이전의 jQuery에서 사용되어야하며은 method
별칭이며 최신 버전에서 사용해야합니다.
AJAX 를 통해이 작업을 수행해야합니다 . 나는 당신이 이것을 더 쉽게 만들기 위해 jQuery를 사용하는 것이 좋습니다 ....
$("#idOfElement").on('click', function(){
$.ajax({
url: 'pathToPhpFile.php',
dataType: 'json',
success: function(data){
//data returned from php
}
});
)};
페이지를 다시로드하지 않는 솔루션
<?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>
이것이 가능한 가장 쉬운 방법입니다. 게시물을 통해 양식이 게시되면 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
그가 원하는 것이 정확히 표시됩니다. ¬_¬
다음은 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
head의 자바 스크립트 함수를 사용하여이 $sendingValue
페이지 앞의 많은 예제와 같이 ajax를 통해 다른 php-page 로 보냅니다 . 다른 페이지 인 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 요소에 추가 +
단지 업데이트를하고 HTML의 기존 내용 대체 p
요소를 "results"
.
이것을 시도하면 잘 작동합니다.
<script>
function echoHello(){
alert("<?PHP hello(); ?>");
}
</script>
<?PHP
FUNCTION hello(){
echo "Call php function on onclick event.";
}
?>
<button onclick="echoHello()">Say Hello</button>