5

AngularJS: Передача данных в запрос $http.get

36

Я столкнулся с проблемой при выполнении HTTP-запросов с использованием функции $http в моем приложении. У меня есть функция, которая выполняет POST-запрос, и она работает корректно. Вот код:

$http({
   url: user.update_path, 
   method: "POST",
   data: {user_id: user.id, draft: true}
});

Однако у меня есть другая функция для выполнения GET-запроса, и я столкнулся с проблемой: мне нужно отправить данные вместе с запросом, но в GET-запросах такой возможности, как я понимаю, нет.

Вот как выглядит мой GET-запрос:

$http({
   url: user.details_path, 
   method: "GET",
   data: {user_id: user.id}
});

Синтаксис для функции http.get следующий:

get(url, config)

Вопрос в том, как мне передать данные (в данном случае user_id) при выполнении GET-запроса? Как решить эту проблему?

4 ответ(ов)

5

Да, вы можете передавать параметры напрямую в $http.get(). Вот пример, который работает корректно:

$http.get(user.details_path, {
    params: { user_id: user.id }
});

Таким образом, параметры будут автоматически добавлены к URL запроса.

0

Если вы хотите отправлять параметры и заголовки в GET-запросе с помощью AngularJS, вы можете использовать $http.get() метод. Вот пример того, как это можно сделать:

$http.get('https://www.your-website.com/api/users.json', {
        params: {page: 1, limit: 100, sort: 'name', direction: 'desc'},
        headers: {'Authorization': 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='}
    }
)
.then(function(response) {
    // Запрос выполнен успешно
}, function(x) {
    // Ошибка запроса
});

Полный пример сервиса может выглядеть следующим образом:

var mainApp = angular.module("mainApp", []);

mainApp.service('UserService', function($http, $q) {
   this.getUsers = function(page = 1, limit = 100, sort = 'id', direction = 'desc') {
        var dfrd = $q.defer();
        $http.get('https://www.your-website.com/api/users.json', 
            {
                params: {page: page, limit: limit, sort: sort, direction: direction},
                headers: {Authorization: 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='}
            }
        )
        .then(function(response) {
            if (response.data.success === true) { 
                dfrd.resolve(response.data); // Обработка успешного ответа
            } else {
                dfrd.reject('Ошибка: ' + response.data.message); // Обработка неуспешного ответа
            }
        }, function(x) {
            dfrd.reject('Ошибка запроса: ' + x.status); // Обработка ошибки запроса
        });
        return dfrd.promise;
   }
});

В этом примере мы создаем UserService, который содержит метод getUsers. Он принимает параметры для пагинации и сортировки, отправляет GET-запрос и обрабатывает как успешные, так и ошибочные ответы. Это позволяет вам легко управлять запросами к API и обрабатывать данные соответствующим образом.

0

Вы можете просто добавить параметры в конец URL:

$http.get('path/to/script.php?param=hello').success(function(data) {
    alert(data);
});

В паре с script.php:

<? var_dump($_GET); ?>

В результате вы получите следующее сообщение в JavaScript:

array(1) {  
    ["param"]=>  
    string(4) "hello"
}
0

Вот полный пример HTTP GET запроса с параметрами, используя AngularJS в ASP.NET MVC:

КОНТРОЛЛЕР:

public class AngularController : Controller
{
    public JsonResult GetFullName(string name, string surname)
    {
        System.Diagnostics.Debugger.Break();
        return Json(new { fullName = String.Format("{0} {1}", name, surname) }, JsonRequestBehavior.AllowGet);
    }
}

ВИД:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script type="text/javascript">
    var myApp = angular.module("app", []);

    myApp.controller('controller', function ($scope, $http) {

        $scope.GetFullName = function () {

            // URL будет таким - ControllerName/ActionName?name=nameValue&surname=surnameValue

            $http.get("/Angular/GetFullName?name=" + encodeURIComponent($scope.name) + "&surname=" + encodeURIComponent($scope.surname))
            .then(function (response) {
                alert('Ваше полное имя - ' + response.data.fullName);
            })
            .catch(function (error) {
                alert("Произошла ошибка при выполнении AJAX-запроса");
            });

        }
    });

</script>

<div ng-app="app" ng-controller="controller">

    <input type="text" ng-model="name" />
    <input type="text" ng-model="surname" />
    <input type="button" ng-click="GetFullName()" value="Получить полное имя" />
</div>

В этом примере контроллер AngularController обрабатывает запрос от AngularJS-приложения и возвращает полное имя на основе переданных параметров name и surname. На стороне клиента мы создаем AngularJS-приложение, где пользователь может ввести имя и фамилию, а затем, при нажатии кнопки, выполняется AJAX-запрос к контроллеру. Помните, что важно использовать encodeURIComponent() для кодирования параметров URL, чтобы избежать возможных проблем с символами.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь