2016-10-25 2 views
0

С углового приложения, когда я отправить пост запрос, используя JQuery следующим образом ...

this.login = function (email, password) { 
    return $.getJSON(FOO_URL, { 
     email: email, 
     password: password 
    }); 
} 

... мой ответ прекрасно.

Object {result: "ok", key_one: result_one, key_two: result_two, ...} 

Однако, когда я пытаюсь сделать то же самое с помощью углового-х $http следующим образом ...

this.login = function (email, password) { 
    return $http.post(FOO_URL, { 
     email: email, 
     password: password 
    }); 
} 

... мои данные ответ совершенно пуст.

Object {data: "", status: 200, config: Object, statusText: "OK"} 

Почему мои данные ответа пустой с угловой $http?

+0

'$ .getJSON' будет ** не ** выдавать запрос' POST'. Это может сделать только «GET» – Phil

+0

... но $ http.get тоже не работает. – Grateful

ответ

0

jQuery's $.getJSON будет не вопрос POST запрос. Он может делать только GET.

Чтобы сделать это точно так же, вы хотите, чтобы передать данные в params ...

$http.get(FOO_URL, { 
    params: { 
     email: email, 
     password: password 
    } 
}) 

См https://docs.angularjs.org/api/ng/service/$http#usage


Чтобы отправить запрос POST с данными, отформатированные в application/x-www-form-urlencoded который, если вы используете PHP $_REQUEST (или $_POST), вам нужно будет сделать это, см. этот ответ ~ https://stackoverflow.com/a/30970229/283366

Короткий ответ, впрыснуть $http и $httpParamSerializer и использовать

$http({ 
    method: 'POST', 
    url: FOO_URL, 
    data: $httpParamSerializer({email: email, password: password}), 
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' } 
}) 
+0

К сожалению, $ http.get получает тот же ответ. Так что это все еще не работает. – Grateful

+0

@Grateful вы задали объект params как в моем ответе? – Phil

+0

oops ... позвольте мне сказать, что a go – Grateful

0

Это два разных запросов HTTP. Один из них - getJSON - метод GET, а $ http.post - метод POST.

this.login = function (email, password) { 
    return $http.get(FOO_URL, { 
     params: { 
      email: email, 
      password: password 
     } 
    }); 
} 
+0

Благодарим вас за эту информацию. Unfortunatley, $ http.get тоже не работает ... поскольку он дает мне точно такой же ответ. – Grateful