[javascript] onclick으로 PHP 기능 실행

태그 를 클릭 할 때만 PHP 함수 를 호출하는 간단한 솔루션을 찾고 있습니다.

PHP :

function removeday() { ... }

HTML :

<a href="" onclick="removeday()" class="deletebtn">Delete</a>

업데이트 : html 및 PHP 코드가 동일한 PHP 파일에 있습니다.



답변

먼저 세 가지 언어가 함께 작동한다는 것을 이해하십시오.

  • 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/


답변

자바 스크립트에서 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
}


답변

이것이 당신의 버튼이라면 다소 간단한 PHP로 할 수 있습니다.

<input type="submit" name="submit>

그리고 이것은 당신의 PHP 코드입니다

if(isset($_POST["submit"])) { php code here }

버튼을 클릭 할 때 발생하는 get의 게시를 제출할 때 코드 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>


답변

이것이 가능한 가장 쉬운 방법입니다. 게시물을 통해 양식이 게시되면 php 기능을 수행하십시오. 페이지를 다시로드 할 필요없이 비동기 적으로 기능을 수행하려면 AJAX가 필요합니다.

<form method="post">
    <button name="test">test</button>
</form>

    <?php
    if(isset($_POST['test'])){
      //do php stuff  
    }
    ?>