Не работает почтовый метод AngularJS

0

Я пытаюсь отправить некоторые данные вместе с сообщением на конкретный URL-адрес, у которого есть php-скрипт. На данный момент у меня нет доступа к скрипту php. Скрипт php проверяет, соответствует ли строка любой записи в db и возвращает эту запись, если есть совпадение. Если нет совпадения, скрипт вернет все записи.

Следующий код - это то, что у меня есть до сих пор. Как вы можете видеть, у меня есть строка с именем: shouldnotfindanyresultsstring. Это должно фактически не возвращать никаких результатов. Однако он возвращает все записи вместо записей.

То, что я пробовал:

  • Использовать params вместо data
  • использовать разные Content-types
  • используйте короткую версию метода post

$http({
    url: $scope.url,
    method: "POST",
    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
    data: {search: "shouldnotfindanyresultsstring"}
}).then(function (response) {
    console.log(response);
}, function (response) { // optional
    console.log("Still not working");
});

Поэтому в конечном итоге я хочу искать записи в db с помощью строки поиска. Однако я не работаю.

С почтальоном я могу создать пост, который работает. У меня есть сильное чувство, что это имеет какое-то отношение к Content-type

  • 1
    Можете ли вы опубликовать HTTP-запрос, который выполняет почтальон?
  • 0
    Получение данных с сервера без их изменения должно быть методом GET. Это не относится к вашему вопросу, но я подумал, что вы должны знать это, если не знали.
Показать ещё 3 комментария
Теги:
postman

3 ответа

0
Лучший ответ

Если вы хотите использовать "application/x-www-form-urlencoded", тогда отформатируйте свои данные как строку

data: "search=shouldnotfindanyresultsstring"

Если вы хотите использовать 'application/json', используйте это:

var jsonData = { search : "shouldnotfindanyresultsstring" };

$http({
    method: 'POST',
    url: $scope.url,
    contentType: 'application/json',
    data: JSON.stringify(jsonData),
}).
    success(function (data) {
        console.log(data);
    }).
    error(function (message, status) {
        console.log(message);
    });
  • 0
    Спасибо, этот на самом деле работает! Я использую data : "search=shouldnotfindanyresultsstring"
  • 0
    Большой! Хорошего дня
0

Если вы хотите использовать x-www-form-urlencoded вам нужно фактически закодировать данные как строку. Угловой всегда помещает ваш объект в объект JSON, закодированный в вашем теле, даже если вы укажете этот заголовок.

Он объяснил в этом ответе и дает решение

0

Попробуй это:

$http.post($scope.url, JSON.stringify("shouldnotfindanyresultsstring"), { headers: {'Content-Type': 'application/x-www-form-urlencoded'} })

или это:

 $http.post($scope.url, JSON.stringify({search: "shouldnotfindanyresultsstring"}), { headers: {'Content-Type': 'application/x-www-form-urlencoded'} })

Ещё вопросы

Сообщество Overcoder
Наверх
Меню