Как я могу изменить URL http post запроса, если есть ошибка

#javascript #angularjs #http #post

#javascript #angularjs #http #Публикация

Вопрос:

Вот функция для обработки моей формы

             $scope.processForm = function () {

                var url = 'http://localhost:8080/tickets/'

                $http({
                    method: 'POST',
                    headers: {'Content-Type': 'application/json; charset=UTF-8'},
                    url: url,
                    data: JSON.stringify($scope.formData)
                }).then(function successCallback(response) {
                    //log
                    console.log("ticket purchased");

                }, function errorCallback(response) {
                    var requestID = JSON.stringify(response.data.requestID);
                    console.log("purchase failed");
         });
  

Что я хотел бы сделать, так это добавить requestID в конец URL-адреса, если есть ошибка.

Если есть ошибка, то URL-адрес должен изменить приведенное ниже после повторной отправки:

  var url = 'http://localhost:8080/tickets/'  requestID
  

Ответ №1:

Вы хотите добавить идентификатор запроса в конец URL-адреса, на который вы отправляете данные, правильно?

Одним из вариантов было бы сохранить либо URL-адрес, либо идентификатор запроса в $scope.

 $scope.url = 'http://localhost:8080/tickets/';

$scope.processForm = function () {

            $http({
                method: 'POST',
                headers: {'Content-Type': 'application/json; charset=UTF-8'},
                url: $scope.url,
                data: JSON.stringify($scope.formData)
            }).then(function successCallback(response) {
                //log
                console.log("ticket purchased");

            }, function errorCallback(response) {
                var requestID = JSON.stringify(response.data.requestID);
                $scope.url = 'http://localhost:8080/tickets/'   requestID;
                console.log("purchase failed");
     });
  

Комментарии:

1. Спасибо, это помогло мне найти решение.

Ответ №2:

Я понял, как добиться того, чего я хотел, в конце концов. Я сохранил URL-адрес и идентификатор запроса в $scope.

 if ($scope.requestID == null) {
    $scope.url = 'http://localhost:8080/tickets/';
} 
else if ($scope.requestID !== null amp;amp; $scope.firstTransaction == null) {

    $scope.firstRequest = $scope.requestID;

    console.log("first transaction id = "   $scope.requestID)

    $scope.url = 'http://localhost:8080/tickets/'   $scope.firstRequest;

}

$scope.processForm = function() {

        $http({
            method: 'POST',
            headers: {
                'Content-Type': 'application/json; charset=UTF-8'
            },
            url: $scope.url,
            data: JSON.stringify($scope.formData)
        }).then(function successCallback(response) {
            //log
            console.log("ticket purchased");

        }, function errorCallback(response) {
            var requestID = JSON.stringify(response.data.requestID);
            $scope.url = 'http://localhost:8080/tickets/'   requestID;
            console.log("purchase failed");
        });