Angularjs возвращает ошибку в ответе $ http [duplicate]

0

Я создал функцию управления отправкой данных на сервер. Я хочу вернуть ответ $http когда он будет успешным.

Мой контроллер: (Когда я вызываю функцию)

var myResponse = sendData(inputValueArray, url, onSuc, onErr, $http);
// Nothing happen here:
alert(myResponse);

Моя функция для отправки данных:

function sendData(inputArray, url, onSuccess, onErr, $http) {
var serverResponse = "";
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
$http({
        method: 'POST',
        url: url,
        data: {
          myData: inputArray
        },
        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    })
.success(function(response) {
    if (response.res == true) {
        onSuccess();
        serverResponse = response;
    }
    else {
        onErr();
    }
})
.error(function(data, status, headers, config) {
    onErr();
});
return serverResponse;

}
Теги:

1 ответ

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

Вы возвращаете serverResponse прежде чем у него будут какие-либо данные из обратного вызова. Вместо этого попробуйте что-то вроде этого:

function sendData(inputArray, url, onSuccess, onErr, $http) {
  var serverResponse = "";
  $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';

  return $http({
        method: 'POST',
        url: url,
        data: {
          myData: inputArray
        },
        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    });
}

И тогда вы используете его так

sendData
.success(function(response) {
    if (response.res == true) {
        onSuccess();
        serverResponse = response;
        alert(serverResponse);   // ************
    }
    else {
        onErr();
    }
})
.error(function(data, status, headers, config) {
    onErr();
});
  • 0
    Я хочу получить ответ, чтобы сделать многое с ним в controller . Так что не просто предупреждение. Также это более гибко для меня. Спасибо :)

Ещё вопросы

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