【问题标题】:How to send DELETE request to server with Json data using AngularJS?如何使用 AngularJS 将 DELETE 请求发送到带有 Json 数据的服务器?
【发布时间】:2015-06-21 14:28:21
【问题描述】:

我必须向服务器发送一个 http DELETE 请求。类型必须是 JSON,对象如下所示:

{ "id": "value"}

我的第一个方法是下面的代码,但到目前为止它不起作用:

$http.delete('http://blabla/server/house', {"id": "value"}).success(function(data) {
            console.log(data);
            //Redirect to index.html
            $location.path('/'); 
        });

可行的解决方案是什么样的?

【问题讨论】:

  • 语法是:$http.delete(url, [config]),而不是$http.delete(url, [data])

标签: javascript json angularjs


【解决方案1】:

正如@KevinB 指出的,config 是第二个参数。

var obj = { "id": "value"};
var config = { data: JSON.stringify(obj) };
$http.delete('http://blabla/server/house', config).success(function(data) {
        console.log(data);
        //Redirect to index.html
        $location.path('/'); 
    });

【讨论】:

  • 这是错误:TypeError: Cannot assign to read only property 'method' of {"id":"552e638a057995402fb9e329"}
  • 您在哪一行收到此错误。您的 ID 字段是否正确填写?此方法背后的理论是您以标准方式创建 javascript 对象。然后,您使用 stringify 将该对象解析为 JSON,然后您可以将其发送回服务器。你是在第一行还是第二行得到错误?
  • 另外,你不会使用“严格模式”吧?
  • @Asher 当您尝试分配字符串的属性时也会发生该错误,这就是这里发生的情况。语法是:$http.delete(url, [config]),而不是 $http.delete(url, [data])。 Angular 正在获取配置对象(在您的情况下是一个字符串),并尝试向其添加 method 属性。
  • 我会做{data: JSON.stringify(obj)} 虽然我不确定是否需要 JSON.stringify。 DELETE 方法通常没有内容,所以我不确定 Angular 是否因此而有所不同。
【解决方案2】:
$http({
            method: 'DELETE',
            url: 'http://blabla/server/house',
            data: JSON.stringify({
                'id': 'value'
            })
        }).success(function (results) {
            console.log(results);
            //Redirect to index.html
            $location.path('/'); 
        });

【讨论】:

    【解决方案3】:

    我想您可以将参数作为查询参数的一部分传递。像这样的:

    var config = {
       params: {
         yourServerSideParamName: JSON.stringify({'id': 'value' })
       }
    };
    
    $http.delete('blabla/server/house', config).success(function(data){
       $location.path('/'); 
    });
    

    希望对你有帮助!

    【讨论】:

    • 哦,因为我不喜欢没有任何解释就降低声誉的人:/
    • "类型必须是 JSON"
    • @KevinB。你说的对。我没有注意那个。我已经更新了我的答案。
    猜你喜欢
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 2016-05-26
    • 2014-03-22
    • 2023-03-15
    相关资源
    最近更新 更多