Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Angular Resource + formData = method: PUT = pusty obiekt
wujek2009
post
Post #1





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

Ostrzeżenie: (0%)
-----


Hej,

Problem polega na tym, że gdy wykonuje request do serwera z nagłówkiem PUT to w parametrach wysyłany jest pusty obiekt z formData. Jestem pewien, że formData nie jest pusty, ponieważ filtrując go metodą serialize zwraca mi parametry. Ogólnie formularz przekazuje informacje o pliku (tj: jest tam upload) - stąd taka metoda przekazywania danych. Więc teraz trochę kodu:

[JAVASCRIPT] pobierz, plaintext
  1. var form = angular.element('#form-upload'),
  2. formData = new FormData(form.get(0));
  3.  
  4. $resource('link', {}, {
  5. update: {
  6. method: 'PUT',
  7. params: formData,
  8. transformRequest: angular.identity,
  9. headers: {
  10. 'Content-Type': undefined
  11. }
  12. }
  13. }).update(function(response) {
  14. console.log('aa');
  15. });
[JAVASCRIPT] pobierz, plaintext


Najdziwniejsze jest to, że gdy w/w kod zmienię na ten co stosuje w przypadku tworzenia (metod: POST) to wszystko działa:
[JAVASCRIPT] pobierz, plaintext
  1. var form = angular.element('#form-upload'),
  2. formData = new FormData(form.get(0));
  3.  
  4. $resource('link do tworzenia', {}, {
  5. save: {
  6. method: 'POST',
  7. transformRequest: angular.identity,
  8. headers: {
  9. 'Content-Type': undefined
  10. }
  11. }
  12. }).save(formData, function(response) {
  13. // udało się
  14. }, function(response) {
  15. // error
  16. });
[JAVASCRIPT] pobierz, plaintext


Próbowałem zmodyfikować w/w kod i zmienić tylko nagłówek na PUT i resztę zostawić (tj: metodę "save", itd.) - jednak to także nie pomogło i zwracany jest pusty obiekt.
W konsoli jak idzie request to widzę, że PUT NIC nie przekazuje, więc to nie wina frameworka (backendu).

Podejrzewam, że źle wykorzystuje PUT - ma ktoś jakieś pomysły jak do tego podejść?
Go to the top of the page
+Quote Post
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


PUT nie obsługuje parametrów - w nim dane muszą iść wewnątrz ciała żądania. Zatem powinno to raczej wyglądać jak Twój przykład z POST - z tym, że zamiast POST podstaw PUT.


--------------------
Go to the top of the page
+Quote Post
wujek2009
post
Post #3





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

Ostrzeżenie: (0%)
-----


Powiem, że zmieniłem (dla requesta PUT)
[JAVASCRIPT] pobierz, plaintext
  1. params: formData,
  2.  
  3. // na:
  4.  
  5. params: {
  6. imie: 'john'
  7. },
  8.  
[JAVASCRIPT] pobierz, plaintext


i normalnie otrzymuje dane.. czyli jakby angular resource (PUT/update) nie potrafił obsłużyć formData
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 03:19