Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中调用php方法?_Javascript_Php_Ajax_Database - Fatal编程技术网

如何在javascript中调用php方法?

如何在javascript中调用php方法?,javascript,php,ajax,database,Javascript,Php,Ajax,Database,我已经在这里做研究了。 很多人说ajax更好。 但是我想先问一些问题,因为我从来没有使用过ajax 如果我在窗口上按yes,我想删除数据库中的某些行。请使用javascipt确认 我的HTML按钮 <button onclick="deleteFunction()">Del</button> 存储类中的Mydelete方法 class Storage { public function delete($condition) { // Delete fro

我已经在这里做研究了。 很多人说ajax更好。 但是我想先问一些问题,因为我从来没有使用过ajax

如果我在
窗口上按yes,我想删除数据库中的某些行。请使用javascipt
确认

我的
HTML按钮

<button onclick="deleteFunction()">Del</button>
存储类中的My
delete
方法

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

我必须使用
ajax
调用
PHP方法吗?

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

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

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

AJAX确实很好地让双方“一起”工作,而不会干扰用户体验

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

$.ajax({
   url: "yourPHPfunction.php",
   data: {
     row: 123
   }
   }).done(function() {
       alert("The row was deleted.")
});
在js delete()函数中

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

如果您看一看jQueryAPI文档就好了。
但在此之前,要了解AJAX的背景知识,最好先阅读。

我会用一句简单的话来回答:

看看这个视频:

您将了解自己,为什么没有AJAX您所要求的是不可能的

欣赏视频,再见:)


我希望这个答案能帮助您理解为什么不使用AJAX或类似工具,您就不能做自己想做的事情;)

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

这将为您提供基本流程:

<!-- 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>

ID:
在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);
}

?>


不,如果你不想使用ajax,那么正常的提交将如kevin所说,而且,当你定义了
deleteColumn()
时,为什么要调用
deleteFunction()
?对于你的
//Do delete方法,你必须重定向到一个PHP文件(或者不重定向,发出另一个调用文件的请求,例如ajax)这实际上是删除。比如
@达伦:嗯。。只是想分离数据库的功能。存储类作业正在数据库中设置某些内容。提交时,获取id,实例化对象,将其馈送到方法use
mysqli.*
或pdo函数中,并执行适当的delete语句。不管怎样,您使用的是php框架吗?或者你只是创建自己的类?我不能使用任何库,因为我正在学习。在这种情况下,本文将非常有用:请注意,以原始方式,你将有大量的跨浏览器问题。也许它在其中一种情况下可以正常工作,但在另一种情况下就不行了。当你最终修复它时,它将在另一个上工作,但在第一个上不工作;)谢谢你的链接。我会从中学习的。不要把它当作一个游戏,我只是希望你能理解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);
}

?>