Nativescript-Vue MobileApp: Axios возвращает статус: ноль и данные: & ldquo; & rdquo;

Почему бы не сбросить с помощью оператора = ()? Это не является спорным и более читаемым.

A a;
//do something that changes the state of a
a = A(); // reset the thing
1
задан marc_s 16 January 2019 в 15:16
поделиться

2 ответа

@RandyCasburn Спасибо за ваш ответ, мистер Рэнди Кэсберн, я не получил никаких ошибок от API. Я обсуждаю эту тему с коллегой, и он сказал мне, что с кодом, который вы мне предоставили, API не получает запрос. Он думает, что это из-за типа контента, который вы указали для application / json, наш API принимает только application / x-www-form-urlencoded, после этого я попробовал ваш путь, изменив тип контента на application / x-www- форма-urlencoded, но я не получил ответа, и я не уверен, что запрос был получен. Мы используем Express API, звонки осуществляются с помощью axios. Мой код для моего нативного приложения такой же, как и для моего настольного браузера, но я удалил его из нативного приложения.

0
ответ дан Vikman 16 January 2019 в 15:16
поделиться

Привет, Викман, и добро пожаловать на SO.

Вы запутались, потому что пытаетесь использовать три разных API с трех разных платформ одновременно. Вот что я имею в виду:

  1. Использование Axios для вашего AJAX-запроса
  2. Использование объекта querystring из NodeJS
  3. Использование функции alert() из окна контекст веб-браузера

Во-первых, я рекомендую сделать вашу жизнь проще, придерживаясь исключительно API-интерфейсов NativeScript. Вам не нужно 2000 строк Axios, чтобы сохранить несколько нажатий клавиш. Документация Axios убедила вас, что вы должны использовать метод querystring.stringify() для передачи параметров запроса вместе с вашим запросом. К сожалению, объект querystring является объектом NodeJS и может или не может быть доступен во время выполнения Android / iOS. Так что уничтожь Аксиоса и сделай свою жизнь проще.

Наконец, убедитесь, что вы не используете код, предназначенный для работы только в браузере (например, alert()) или только в NodeJS (но не в собственных средах выполнения).

Чтобы обеспечить публикацию работ, используйте HTTP-API NativeScript, который задокументирован здесь:

https://docs.nativescript.org/ns-framework-modules/http [1117 ]

Измените свой код на это:

const httpModule = require("http");
const dialogs = require("tns-core-modules/ui/dialogs");

httpModule.request({
    url: url,
    method: "POST",
    headers: { "Content-Type": "application/json" },
    content: JSON.stringify({
        grant_type: config.grant_type,
        username: config.API_username,
        password: config.API_password,
        APIKeys: config.API_key
      })
}).then((response) => {
    const result = response.content.toJSON();
    dialogs.alert(result);
}, (e) => {
    dialogs.alert(JSON.stringify(e));
});

Это будет работать в вашей среде NativeScript.

РЕДАКТИРОВАТЬ: Прочитав ваш комментарий об устройстве и alert, я отредактировал код, чтобы учесть это.

0
ответ дан Randy Casburn 16 January 2019 в 15:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: