【问题标题】:How to call a php script/function on a html button click如何在 html 按钮单击时调用 php 脚本/函数
【发布时间】:2015-02-27 06:29:13
【问题描述】:

在有人攻击我或将其标记下来之前,我已经查看了整个互联网以了解如何执行此操作(包括 stackoverflow 上的相同问题)。我是新手,我发现学习新概念非常困难,所以请放轻松。

我想要做的是在单击按钮时调用 php 脚本/函数。如果有帮助,我会在 WAMP 中运行它。这是我的代码:

<?php include 'the_script.php'; ?>

<button type="button" onclick="the_function()">Click Me</button>

the_script.php 里面有这个:

the_function() {
    echo "You win";
}

为什么这不起作用?我听说按钮是客户端等,而 PHP 是服务器端,这意味着您不能将两者链接在一起。我知道你必须使用 AJAX 来完成这项工作,但是我完全不知道如何去做。我试过用谷歌搜索它等等,但是我什么也找不到。我知道如何使用 AJAX 并用它调用事件,但是我仍然不知道如何让它调用 PHP 脚本。

你能否让你的答案尽可能简单明了,我是新手

感谢您的帮助:)

编辑***

出于某种原因,无论我走到哪里,每个人的代码都是不同的。我学习 AJAX 的方式看起来完全不同。你能这样写,让我明白吗?谢谢,这是一个例子:

var request;

if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
} else {
    request = new ActiveXObject("Microsoft.XMLHTTP");
}

request.open('GET', 'file.php', true);

request.onreadystatechange = function() {

    if (request.readyState===4 && request.status===200) {
        do stuff
    }
}

request.send();

【问题讨论】:

  • 是被?
  • 就像@bart2puck问的那样,the_functionJavascript函数吗?如果是,那么只有您可以调用它。但是就像您在问题中显示的那样,它似乎是 PHP 函数,所以您不能在 HTML 按钮的点击事件中调用它。
  • php运行在服务器端js运行在客户端,不能只通过js调用php。为此,您需要进行 ajax 调用
  • 我已经描述了here请检查我希望你会快乐。

标签: php ajax onclick


【解决方案1】:
the_function() {

$.ajax({url:"demo_test.php",success:function(result){

   alert(result); // will alert 1

 }});

}

// demo_test.php

<?php echo 1; ?>

备注

  1. 包含用于使用 jquery Ajax 的 jquery 库
  2. 将 demo_test.php 文件保存在您的 javascript 所在的同一文件夹中 文件驻留

【讨论】:

  • 抱歉,我无法理解您写的内容,无论我走到哪里,每个人都编写不同的代码,所以这令人难以置信的混乱。我学习 AJAX 的方式完全不同,我将包含一个示例,以便人们可以看到如何编写它,以便我理解
  • 您可以使用 javascript 和 jquery 调用 Ajax。更简单的是jquery ajax。 Jquery 是让事情变得简单的 javascript 库。您正在使用 javascript 常规的 Ajax。任何方式的代码是不同的概念是相同的。
【解决方案2】:

使用jQuery。在HTML页面中——

<button type="button">Click Me</button>

<script>
$(document).ready(function() {
$("button").click(function(){
  $.ajax({
    url:"php_page.php", //the page containing php script
    type: "POST", //request type
    success:function(result){
    alert(result);
    }
  });
});
})
</script>

PHP 页面 -

echo "Hello";

【讨论】:

    【解决方案3】:

    像这样修改the_script.php

    <script>
    the_function() {
        alert("You win");
    }
    </script>
    

    【讨论】:

      【解决方案4】:
      First understand that you have three languages working together.
      

      PHP:仅由服务器运行并响应单击链接 (GET) 或提交表单 (POST) 等请求。 HTML & Javascript:仅在某人的浏览器中运行(不包括 NodeJS) 我假设你的文件看起来像:

      <?php
      function the_function() {
      echo 'I just ran a php function';
       }
      
       if (isset($_GET['hello'])) {
        the_function();
        }
         ?>
        <html>
       <a href='the_script.php?hello=true'>Run PHP Function</a>
       </html>
      

      因为 PHP 只响应请求(GET、POST、PUT、PATCH 和 DELETE 通过 $_REQUEST),所以即使它们在同一个文件中,您也必须运行 php 函数。这为您提供了一定程度的安全性,“我应该为这个用户运行这个脚本吗?”。

      如果您不想刷新页面,您可以通过称为异步 Javascript 和 XML (AJAX) 的方法向 PHP 发出请求而无需刷新。

      【讨论】:

      • @DanielSpajic :如果您愿意,您还可以尝试我的其他概念的答案
      【解决方案5】:

      当然 AJAX 是解决方案,

      执行 AJAX 请求(为了方便我们可以使用 jQuery 库)。

      第一步。

      在您的网页中包含 jQuery 库

      一个。您可以从 jquery.com 下载 jQuery 库并将其保存在本地。

      b.或者直接粘贴以下代码,

      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
      

      第 2 步。

      点击按钮调用javascript函数

      <button type="button" onclick="foo()">Click Me</button>
      

      第 3 步。

      最后是函数

       function foo () {
            $.ajax({
              url:"test.php", //the page containing php script
              type: "POST", //request type
              success:function(result){
               alert(result);
             }
           });
       }
      

      当您单击按钮并提醒响应时,它会向 test.php 发出 AJAX 请求。

      例如你在 test.php 中的代码是,

      <?php echo 'hello'; ?>
      

      然后当你点击按钮时它会提示“你好”。

      【讨论】:

      • success:function(result) 是什么意思?为什么您将“结果”作为参数之一传递?我不明白
      • result 是 test.php 在他的示例中返回的变量。在这种情况下,它将是你好这个词。所以警报(结果)实际上意味着警报('你好')。如果你把 echo "Happy new Year" 在 test.php alert(result) 会显示新年快乐。
      • "success" 是一个回调函数,它会在我们得到成功的完整响应后立即调用。 “result”参数包含 test.php 的结果(所以在本例中为“hello”)
      • @akhil.cs 可以这样做以在网页中而不是在警报中输出结果吗?此页面上的所有答案都暗示了一个警报,我觉得这是一个奇怪的选择。
      【解决方案6】:

      试试这个:

      <button type="button">Click Me</button>
      <p></p>
      <script type="text/javascript">
          $(document).ready(function(){
              $("button").click(function(){
      
                  $.ajax({
                      type: 'POST',
                      url: 'script.php',
                      success: function(data) {
                          alert(data);
                          $("p").text(data);
      
                      }
                  });
         });
      });
      </script>
      

      在script.php中

      <?php 
        echo "You win";
       ?>
      

      【讨论】:

      • 为什么要把“数据”传入函数,除此之外我什么都懂
      • @DanielSpajic : 当 ajax 返回文本“You win”时,它会出现在

        标签中,我写在按钮之后的标签

      • @DanielSpajic : 你可以尝试一次,然后你就明白了
      • 我应该作为“数据”传入什么
      • @DanielSpajic : mo 需要传递任何东西。你只需将我的第一个代码放在 index.php 中,第二个代码放在你的 script.php 中即可。然后单击按钮。它会自动工作.尝试一次。
      【解决方案7】:

      你也可以使用

         $(document).ready(function() {
      
          //some even that will run ajax request - for example click on a button
      
          var uname = $('#username').val();
          $.ajax({
          type: 'POST',
          url: 'func.php', //this should be url to your PHP file
          dataType: 'html',
          data: {func: 'toptable', user_id: uname},
          beforeSend: function() {
              $('#right').html('checking');
          },
          complete: function() {},
          success: function(html) {
              $('#right').html(html);
          }
          });
      
          });
      And your func.php:
      
        function toptable()
       {
        echo 'something happens in here';
       }
      

      希望对某人有所帮助

      【讨论】:

        猜你喜欢
        • 2014-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-29
        • 1970-01-01
        • 1970-01-01
        • 2020-03-14
        相关资源
        最近更新 更多