如何通过 JavaScript 发出 HTTP DELETE 请求?

How can I make an HTTP DELETE request through JavaScript?

我从事广告工作。我正在使用 FB 图 API 到 'DELETE' 从平台为使用 HTTP DELETE 方法的客户分配广告。

我的请求格式为:

https://graph.facebook.com/v2.5/{{NODE_ID}}/{{EDGE_NAME}}?field_ids=['123456']

我通常使用图形浏览器工具(https://developers.facebook.com/tools/explorer)来完成这样的任务,但是客户提供了超过8000个任务要删除,所以手动一个一个地删除是很困难的。

如何使用 JavaScript 调用 HTTP DELETE 方法?我想使用这样的 for 循环:

var node_ids = ["123","456","789"];
var field_ids = ["abc","def","ghi"];

for (i = 0; i < node_ids.length < i++){

// MAKE DELETE REQUEST to "https://graph.facebook.com/v2.5/" + node_ids[i] + "/{{EDGE_NAME}}/?field_ids=['" + field_ids[i] + "']";

}

我在网上看到这样的代码,我认为可能适用,但我不知道它是如何工作的...

$.ajax({
    url: '/script.cgi',
    type: 'DELETE',
    success: function(result) {
        console.log(result)
    }
});

看起来像jquery,但我猜它一定是ajax? ajax 是否需要像 jquery 那样引用库?是否就像将此函数放入我的 for 循环并将我在 for 循环内构建的 URL 传递到 ajax 调用中的 'url' 字段一样简单...?

传递给 'success' 参数的最佳函数是什么,以便我知道我的请求已成功?是否可以 return 来自删除请求的响应,即 success:true 如果有效?

越直白越好!

你是否预见到我在两个数组中循环遍历 8000 个条目会出现任何问题(一个包含我正在编辑的节点 ID/对象,一个包含与我正在访问的边缘相关的字段,这将删除又名 'remove' 来自我正在访问的节点的分配...?

谢谢!

It looks like jquery but I guess it must be ajax?

Ajax 是一个用来表示 "Making an HTTP request, using JavaScript, from a webpage, without leaving the page" 的术语。不使用 Ajax.

就无法从网页发出 DELETE 请求

您的示例代码使用 jQuery 库来实现它。

Does ajax need a library to be referenced like jquery does?

您需要一些方法来发出 HTTP 请求。 JavaScript 没有内置的任何东西,但大多数主机环境至少提供了一种机制。对于 Web 浏览器,标准机制是 XMLHttpRequest。 jQuery 的 Ajax 函数是它的包装器(通常,有一些例外,特别是在发出 JSONP 请求时)。

Is it as simple as putting this function inside my for-loop and passing the URL I'm building inside the for loop to the 'url' field in the ajax call...?

是的。

What is the best function to pass to the 'success' parameter here so I know my request was successful?

这取决于你所说的 "know" 和 "successful" 的意思。

如果获得成功的 HTTP 状态,您拥有的代码会将响应记录到控制台。如果您想通过其他机制获得通知,则需要更加具体。

如果服务器没有在响应中提供任何内容,或者(在极少数情况下)它没有提供合理的 HTTP 状态代码,那么您可能需要其他东西。

Is it possible to return the response from the delete request i.e. success:true if it works?

No. Ajax is asynchronous.