2016-02-04 38 views
1

我試圖用發送DELETE命令$ http.delete,但我得到一個錯誤:

TypeError --> Cannot create property 'method' on string 'user_id=5&response=This+is+a+test.'

當我在控制器執行命令如下:

在控制器:

.controller(myController', function($scope) { 

    var something = { 
     user_id: 1, 
     text: 'This is a test.' 
    } 

    MyFactory.deleteSomething(something); 
}); 

在服務:

.factory('MyFactory', function($http) { 

var service = {}; 

service.deleteSomething = function(something) { 

var data = $.param(something); 
var promise = $http.delete('http://example.com/myapp.php?', 
data, { 
    headers: { 
    'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8' 
    } 
}) 
    .success(function(data,status) { 
    console.log("Delete success!"); 
    return data; 
    }) 
    .error(function(data, status, header, config) { 
    console.log("Delete FAILED!"); 
    }); 
return promise; 
    } 
return service; 
}); 

我在這裏錯過了什麼?

回答

3

第二個參數delete()預計是具有http請求配置的對象。不是一些字符串作爲你逝去的data

$http.delete('http://example.com/myapp.php?', data, { [...]

+0

這不就是'VAR數據= $ .PARAM(東西);'是?剛剛通過[這個答案在SO](http://stackoverflow.com/questions/22055251/sending-data-with-angularjs-http-delete-request)。 – lilbiscuit

+0

正如你可以在你自己的錯誤信息中看到的,'$。param(something)'返回一個字符串,它包含基於對象''user_id = 5&response = This + is + a + test.''的查詢參數。'你可能想要與此相反的東西。 – enapupe

+0

解決了這個問題:將var data = $ .param(something);'var var = {params:something};' – lilbiscuit