【问题标题】:How to call php method in javascript? [closed]如何在javascript中调用php方法? [关闭]
【发布时间】:2014-09-09 02:10:29
【问题描述】:

我已经在这里做研究了。 很多人说ajax更好。 但是我想先问一些事情,因为我从不使用 ajax。

如果我在windows.confirm using javascipt 上按“是”,我想删除数据库中的某些行。

我的HTML button

<button onclick="deleteFunction()">Del</button>

我的Javascript function

<script type="text/javascript">
  function deleteColumn(id)
  {
    if (confirm("Are you want to delete?") === true) {
      // Do delete method in PHP
    } else {
      // Cancel delete
    }
  }
</script>

Storage class 中我的delete 方法

class Storage
{
  public function delete($condition)
  {
    // Delete from database with condition
  }
}

我必须使用ajax 调用PHP method 吗?

【问题讨论】:

  • 不,如果你不想使用 ajax,那么正常提交就可以了
  • kevin 说了什么,还有,当你定义了deleteColumn() 时,为什么还要打电话给deleteFunction()
  • 对于您的//Do delete method in PHP,您必须重定向到实际执行删除操作的 PHP 文件(或不重定向,发出另一个调用文件的请求,例如 ajax)。
  • 喜欢&lt;?php delete() ?&gt; ? @Darren 嗯.. 只想为数据库分离功能。存储类作业正在数据库中设置一些东西。
  • 提交后,获取 id,实例化对象,将其输入到方法中,使用 mysqli_* 或 pdo 函数并执行正确的删除语句。无论如何,您使用的是 php 框架吗?或者您只是创建自己的课程?

标签: javascript php ajax database


【解决方案1】:

明确两个概念很重要,服务器端执行和客户端执行。

服务器端,和php一样,代码在web服务器中解释。

客户端,和javascript一样,代码在用户的浏览器中解释。

AJAX 真的很好,可以让双方“一起”工作而不影响用户体验。

在这种情况下使用 AJAX 不是必须的。当您想在不重新加载所有站点的情况下执行操作时,AJAX 很有用。如果您想要这样做,请尝试使用一些 jQuery 函数,例如:

$.ajax({
   url: "yourPHPfunction.php",
   data: {
     row: 123
   }
   }).done(function() {
       alert("The row was deleted.")
});

在你的 js delete() 函数中。

如果您不想使用 AJAX,请向您编写删除函数的 PHP 文件发出 GET 或 POST 请求(通过 js)。

如果您查看 jQuery API 文档here 会很好。 但在此之前,要了解 AJAX 的背景,最好阅读 that

【讨论】:

  • 我在学习,不能使用任何图书馆。
  • 在这种情况下,这篇文章会有用:code.tutsplus.com/articles/…
  • 请注意,以原始方式,您将遇到大量跨浏览器问题。可能它在一个中可以正常工作,但在另一个中则不行。当你最终修复它时,它会在另一个中正常工作,但不会在第一个中工作;)
【解决方案2】:

这应该给你基本的流程:

<!-- the form sample -->
<form method="POST" action="your_php.php" onsubmit="return confirm('Are you want to delete?');">
    ID: <input type="text" name="id" /><br/>
    <input type="submit" name="submit" />
</form>

在 PHP 中:

<?php

class Storage
{
    public function delete($id)
    {
        // should be better if this is another class
        $connection = new mysqli('localhost', 'your_db_username', 'db_password', 'database_name');
        $stmt = $connection->prepare('DELETE FROM `table` WHERE id = ?');
        $stmt->bind_param('i', $id);
        $stmt->execute();
    }
}

if(isset($_POST['submit'])) {
    $id = $_POST['id'];
    $storage = new Storage();
    $storage->delete($id);
}

?>

【讨论】:

    【解决方案3】:

    我会用一个简单的短语来回答:

    看这个视频: How PHP Works

    你自己会明白,为什么没有 AJAX 就不可能实现你的要求。

    欣赏视频,再见:)

    我希望这个答案能帮助你弄清楚为什么你不能做你想做的事,而不使用 AJAX 或类似的东西;)

    【讨论】:

    • 感谢您的链接。我会从中吸取教训。
    • 不要把它当作一种侵略,我只是希望你能明白 PHP 是服务器端评估的,你不能在客户端浏览器中运行它......记住它:)
    【解决方案4】:

    php 代码需要 php 解释器才能运行。 浏览器找不到 php 解释器来在 javascript 中运行您的代码。所以你必须调用一个 php 服务器来帮助你。它会运行你的代码并返回你的结果。使用 ajax 是一个更好的主意!

    【讨论】:

      猜你喜欢
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 2017-01-17
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多