Javascript HTML结构dilema-使用POST或GET或XHR操作从数据库中按数据删除项?

Javascript HTML结构dilema-使用POST或GET或XHR操作从数据库中按数据删除项?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我有一个页面,它显示了一个表中的内容,如果你点击它,就可以删除一行 现在,我的行的结构如下所示: foreach ($rewards as $reward) { echo '<tr id="' . $reward['item_id'] . '" title="Delete ' . $reward['item_name'] . '">'; echo '<td>' . $reward['item_id'] . '

我有一个页面,它显示了一个表中的内容,如果你点击它,就可以删除一行

现在,我的行的结构如下所示:

        foreach ($rewards as $reward) {
            echo '<tr id="' . $reward['item_id'] . '" title="Delete ' . $reward['item_name'] . '">';
            echo '<td>' . $reward['item_id'] . '</td>';
            echo '<td>' . $reward['item_name'] . '</td>';
            echo '<td>' . $reward['item_amount'] . '</td>';
            echo '<td><img src="'. $reward['item_image_url'] .'"/></td>';
            echo '</tr>';
        }
foreach($rawards as$rawards){
回声';
回音'.$REPAIR['item_id'].';
回音'.$REPAIR['item_name'].';
回音“.$奖励[“项目金额]”;
回声';
回声';
}
现在的问题是,我一直认为
POST
请求用于使用数据发布操作(也修改数据库)并获取响应,其中
get
请求用于使用发送的数据获取数据并获取响应

现在我被告知应该使用GET请求进行删除操作,但有人说我不应该使用GET请求进行删除操作,原因有很多,但主要原因是“因为您可以通过一个简单的web请求意外执行”

使用POST的问题是,我需要为我认为有点混乱的每一行创建新表单,或者使用一个表单,在每一行中使用submit按钮,并将submit按钮值设置为我要删除的项目id,或者将整行设置为同样混乱的输入

也许你能想到的最好的解决方案是使用需要javascript的XHR请求,但我真的希望我的站点能够同时为javascript禁用者提供这两种功能

我的朋友:

“我认为你应该涵盖他们没有javascript的情况 不少工作场所出于某种原因禁用javascript“

我的问题是,什么更适合这个?使用XHR获取请求、发布或删除?


顺便说一句,我想做的是根据id从数据库中删除一个项目,因此在GET请求中,id将是
/admin/rewards/delete/14444

我将使用Ajax和POST请求,在后端的实现是相同的,唯一不同的是php代码返回的内容

HTML:

PHP:


一句话:如果启用了JavaScript,则使用XHR或AJAX POST请求—选择哪个实现—但如果禁用JavaScript,则返回到简单POST

出于以下几个原因,您确实不想使用GET。根据本书,GET请求应该是一个不改变任何对象状态的可重复操作。这确实是有原因的。正如您所指出的,它们可能“通过简单的web请求意外执行”。这意味着一个用户,不管是恶意的还是纯粹的错误,只要输入一个地址,你就可以删除一些东西。但搜索引擎加剧了真正的危险,有些搜索引擎虔诚地关注每一个链接。应该不惜一切代价避免GET请求的副作用


此外,我是默认情况下不使用脚本的用户之一(可能会越来越多)。作为一个原则问题,我发现任何基本功能都需要JavaScript的网站都是一个诽谤者。我完全支持使用脚本使网站看起来或感觉漂亮,或者支持高级功能,但我仍然相信您应该支持我们中选择禁用脚本的人。正如您所提到的,可能还有禁用JavaScript的工作区,因此用户甚至没有选择余地。因此,我个人建议使用Delete按钮为每一行返回一个表单。(我不认为为每一行编写一个表单有多难看——可能需要在循环中添加两到三个标签?

除了其他两个答案,为什么不在整个表格周围创建一个大表单,每行都有一个提交按钮,其中包含要删除的ID值?在php中,您可以计算出ID并处理请求。

也许您是对的,每行的表单并不是什么大问题。
<form method="post" action="/admin/rewards/delete/">
  <input type="hidden" name="id" value=1444" />
  <input type="submit" value="Delete item" />
</form>
$('form').submit(function(e){
    e.preventDefault();
    $.post(
       '/admin/rewards/delete/?type=ajax',
       $(this).serialize(),
       function(data){
           console.log(data.variable);
       },
       'json'
    );
});
// DELETE item by using $_POST['id'];

// return the result depending on the method used:

if (isset($_GET['type'] && $_GET['type'] == 'ajax') {
    echo json_encode(array('variable' => 'value'));
} else {
    // this is just an example of what you can do if there wasn't an ajax request
    header('Location: success.php');
}