【问题标题】:calling a php object method on clicking a button?在单击按钮时调用 php 对象方法?
【发布时间】:2015-07-20 22:11:45
【问题描述】:

我一直在开发 php 应用程序,到目前为止我已经使用 OO 编程来开发它。我已经声明了一个这样的类

<?php 
class User
{
    public function Add_element()
    {
        //adds some element 
    }

    public function Delete_Element($element_ID)
    {
        //delete the element with that ID
    }
}
?>

我在我的index.php 文件中创建了一个用户类对象(例如$user = new User()),其中包括我的view.index.phpview.index 文件的组织如下 p>

<html>
   <header></header>
   <body>
   <input type="button" id="ID"  value='Delete Element' >
   </body>
<html>

我知道这个问题可能看起来很重复,但我想知道如何在单击按钮时调用 $user-&gt;Delete_element($ID) 方法。

【问题讨论】:

  • 好吧,你要么把它变成一个标准形式,其值在请求中传递给执行删除的 PHP 脚本,或者你使用 AJAX 发出请求而不离开页面,或者您只是创建一个链接,使用相关参数发出请求。您不能在客户端直接从 Javascript 调用 PHP。
  • 您能否对 AJAX 案例进行更详细的描述。我已经看到了其中的六个示例,但它们似乎都在 js 调用上运行了一个 php 文件,而不是在一个类上运行一个特定的 php 函数!
  • 他们当然没有。 JS 运行在客户端,而 PHP 运行在服务器端,两者不能直接通信。使用 AJAX,JS 不是调用 PHP 文件,而是向 Web 服务器发出标准 HTTP 请求,该请求可能会或可能不会传递到 PHP,并且可能有也可能没有 php 扩展名,JS 只关心响应从网络服务器,它的返回码是什么,以及返回的内容。

标签: php jquery oop


【解决方案1】:

您可以按照以下方式做一些事情:

首先使用表格:

<form method="POST" action="delete.php">
    <input type="hidden" name="element_id" value="id">
    <input type="button" name="delete" value="Delete element">
</form>

并创建以下 php 脚本:

if(isset($_POST['element_id']))
{
    $element_id = intval($_POST['element_id']);
    $user->deleteElement($element_id);
}

或者使用ajax,这有点复杂。

编辑: 如果您不想刷新页面,您应该使用 AJAX。从包含 jQuery 开始,这使得这更容易。现在你需要这样的东西:

$("form").submit(function(e){
    var data = {};
    data.element_id = $(this).find("[name='element_id']").val();
    $.POST("delete.php", data).done(function(response){
        alert(response);
    });
    e.preventDefault();
});

【讨论】:

  • 我不想刷新页面来删除项目。
  • 我已经用一些 javascript 编辑了我的答案。
【解决方案2】:

编辑您的 html 文件(将“输入”标签更改为 html 表单):

<form action="Delete_Element.php" method="POST">
    <input type="button" name="ID" value='123456789' >
</form>

创建一个名为“Delete_Element.php”的新php页面:

<?php
    if ( isset($_POST["ID"]) )
    {
        /* init the "user" object, assuming it is init to: $myUser  */
        //this line invokes your method, given the posed IP param. .
        $myUser->Delete_Element($_POST["ID"]);
     }

【讨论】:

  • 我不想刷新页面来删除项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
相关资源
最近更新 更多