2016-02-04 2 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

не то, что 'данные вар = $ .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 (что-то);' to 'var data = {params: something};' – lilbiscuit

Смежные вопросы