【问题标题】:Ask server to delete record请求服务器删除记录
【发布时间】:2017-02-18 22:14:25
【问题描述】:

我对 Web 开发还很陌生,所以请耐心等待。我还简化了代码以尝试获得最佳答案。

<a href="/item/1">Item</a>
<img src="x.png" alt="Delete">

基本上,如果有人点击“项目”,他们会被带到 /item/1。如果他们点击 img x.png,它应该要求服务器删除 /item/1。

如果我按原样单击 x.png,显然不会发生任何事情,但这是个大问题:

我可以让我的网络服务器识别 /item/:id 的 DELETE 方法,但是如何从浏览器提交 DELETE?如果我不能让 POST 或 GET 作为唯一的选择。

将 img 包裹在 href=... 周围会很容易,但这只会执行 GET 并且会破坏 RESTful,所以看起来我需要使用 POST。我怎样才能干净地做到这一点?

第二个问题:

我假设我还必须在提交删除后刷新页面以获取新数据。有没有办法避免这种情况?

欢迎 HTML、JavaScript、JQuery 答案。

【问题讨论】:

标签: javascript jquery html rest


【解决方案1】:

使用 jquery ajax

让我们说

方法一

<a href="/item/1" class="delete_anchor">Item</a>

$(document).ready(function()
{
    $(".delete_anchor").click(function(e)
    {
         e.preventDefault();
         var url = $(this).attr('href');
          $.ajax(
          {
             url: url,
             method: 'POST',
             success: function()
             {
                 alert("done");
             }
          });
     });
});

方法二

<a href="#" id="1" class="delete_anchor">Item</a>

$(document).ready(function()
{
    $(".delete_anchor").click(function(e)
    {
         e.preventDefault();
         var id = $(this).attr('id');
          $.ajax(
          {
             url: '/item/,
             data: {"id":id},
             method: 'POST',
             success: function()
             {
                 alert("done");
             }
          });
     });
});

【讨论】:

  • 这正是我想要的。夫妇 cmets:为了保持安静的做法,我将方法更改为 'DELETE' 而不是 'POST',添加了 error: function(),所以我可以捕获错误,并成功使用 window.location.reload() 来刷新页面,以便删除的项目消失。
  • 完美!很高兴能帮助你交配:D
【解决方案2】:

您想要做的是数据库管理最基本活动的一部分,即 CRUD(创建读取更新删除)。

我建议您使用像PHP Scaffold 这样的工具,它会为您创建基本代码*。使用phpmyadmin 导出表的结构并复制它(例如):

CREATE TABLE `phone` (
  `Id_Phone` int(11) NOT NULL AUTO_INCREMENT,
  `Ds_Phone` varchar(20) COLLATE utf8_bin DEFAULT NULL,
  `Nr_Phone_Country_Code` int(3) NOT NULL DEFAULT '55',
  `Nr_Phone_Area_Code` int(3) NOT NULL DEFAULT '11',
  `Nr_Phone_Number` int(10) NOT NULL
)

您必须拥有包含数据库连接信息的文件(PHP Scaffold 将为您放置包含)

<?php 
$username = "who"; // your username
$password = "aPassword"; // yor password
$database = "mydbName"; // your db name
$server = "localhost";  // leave this

// Opens a connection to a MySQL server
$connection = mysql_connect ($server, $username, $password) or die(mysql_error());
// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection) or die(mysql_error());
?>

不要在你的代码中复制这个,而是保存这个文件(我称之为ConnDB.php并将它包含在每个新php页面的开头 - 如果你使用像上面这样的工具,它会为你做的)

include ('ConnDB.php');
  • 检查代码,您将找到问题的答案。玩弄它,包括选择并从您的数据库中填充它们。玩得开心。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2012-08-08
    • 2019-01-02
    • 1970-01-01
    • 2018-03-03
    • 2013-01-09
    相关资源
    最近更新 更多