【问题标题】:How to call REST DELETE method on Hyperlink Click?如何在超链接单击上调用 REST DELETE 方法?
【发布时间】:2015-10-30 18:41:54
【问题描述】:

我有一个超链接,一旦从 jQuery Datatable 行单击该超链接,它就应该从数据库中删除记录。我的服务器端代码是一个基于 REST 的 Web 服务,其中包含执行操作的 DELETE 方法。

这是我的 HTML:

<a href="#" data-toggle="modal" data-target="#" title="Delete"><i class="glyphicon glyphicon-trash"></i></a>

这是我从超链接获取 Click 事件的方式:

 $('#StudentTable .glyphicon-trash').on('click', function () {
        alert("Hii");
        var table = $('#StudentTable').DataTable();
        var data = table.row(this.closest("tr")).data();
 });

我不应该使用 ajax 调用。

【问题讨论】:

  • 为什么不应该使用 AJAX 调用?
  • @charliebrownie Ajax 不允许在这里..我不知道为什么!!我的上级提出的要求
  • 如果它是一个 REST Web 服务,为什么不使用 delete 方法而不是 post 来遵循 REST 架构?也想知道这个:)
  • 我本来打算建议使用表单并完全忘记 JavaScript,但后来你改变了主意,决定不使用 POST 执行此操作。不使用 Ajax 就不可能从浏览器发出 DELETE 请求。
  • @Lara 你限制不使用 ajax 似乎很奇怪,因为表单中只支持 POST 和 GET。 (请参阅:stackoverflow.com/questions/165779/…)您应该与您的上级澄清他们对该声明的想法。

标签: javascript jquery hyperlink


【解决方案1】:

不使用 XmlHttpRequest,您可以通过发送表单来执行 POST 请求。您需要创建一个包含要发送的字段和值的表单,将其附加到文档中,然后调用表单的 submit 方法。

form = $("<form action='[api endpoint]' target='[iframe id]' method='POST' style='display:none'></form>")
form.append "<input type='input' name='[paramName]' value='[paramValue]'>"
$("body").append(form)
form.submit()

您应该将表单的目标设置为 iframe,因为发送帖子将重定向到服务器响应。如果 API 与脚本不在同一个域中,则必须使用 CORS 来访问响应。

另外,正如其他人所提到的,请求数据删除应使用 DELETE http 动词来完成,以符合 REST 理念。

【讨论】:

  • "不使用 XmlHttpRequest,只能执行 GET 请求" — 如果使用表单,则可以发出 POST 请求。
猜你喜欢
  • 1970-01-01
  • 2010-12-26
  • 1970-01-01
  • 2011-10-19
  • 2013-11-16
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多