代码之家  ›  专栏  ›  技术社区  ›  dlamotte

支持单击链接,但向服务器发送POST(vs GET),而不支持Ajax?

  •  1
  • dlamotte  · 技术社区  · 14 年前

    我觉得这不太可能,但也许我错了。我只是被那些认为只有POST请求才应该修改服务器上的数据的人和那些放宽规则并允许GET请求修改数据的人所折腾。

    <td></td> 行中的元素。另外,向服务器发送邮件的唯一方法是通过表单。但我真的要把整个表格塞进最后一个表格吗 <td></td> 只是为了做一个帖子?或者我应该作弊,使用 <a href=...></a> 发送GET请求的标记?

    <a ...></a> 标签!使用花哨的javascript+xhr!”我会说,哦?在零javascript环境中,这种性能会如何降低?

    3 回复  |  直到 14 年前
        1
  •  3
  •   Stephen P    14 年前

    您不必在每个最终td中塞满一个表单——您可以用一个在每个最终td中都有提交按钮的表单包围整个表。

        <td><input type="submit" name="delete_172" value="Delete"></td>
        ...
        <td><input type="submit" name="delete_198" value="Delete"></td>
    

    然后服务器将收到一个 delete_172=Delete 在表格中 POST 扫描所有要匹配的参数 delete_[0-9]+ ,在下划线上拆分,并且您有要删除的记录的记录ID,或者您有一个映射键来查找要删除的记录ID(如果您希望将记录ID保留在页面之外以确保安全)

    之后,将JS事件处理程序附加到表单onSubmit事件,通过XHR提交整个事件,并动态删除表行。

        2
  •  2
  •   Davy8    14 年前

    GET请求修改数据的一个问题是,通过访问链接数据会发生更改。这个链接甚至可能不会被一个人导航到,比如谷歌在你的网站上爬行。单击刷新也会更改数据。

        3
  •  0
  •   grossvogel    14 年前

    只有你了解你的用户,但我认为现在在“web应用程序”中需要javascript并让没有js的人坚持“web页面”是很容易的。不管怎样,不管怎样,我有时喜欢做一个这样的(比AJAX)javascript解决方案更不那么理想。。。

    在页面中的任意位置放置表单:

    <form method="post" target="yourpage.ext" id="deleteRecordForm">
     <input type="hidden" name="IdToDelete" value="" id="deleteRecordInput" />
    </form>
    

    <a href="#" onclick="deleteRecord(thisId);return false;">[x]</a>
    

    最后,javascript:

    <script type="text/javascript">
     function deleteRecord (id){
       if (confirm ('Are you sure you want to delete this record?')){
         document.getElementById('deleteRecordInput').value = id;
         document.getElementById('deleteRecordForm').submit ();
       }
     }
    </script>