Привет, Викман, и добро пожаловать в SO.
Вы запутались, потому что пытаетесь использовать три разных API с трех разных платформ одновременно. Вот что я имею в виду:
- Использование Axios для вашего AJAX-запроса
- Использование объекта
querystring
из NodeJS
- Использование функции
alert()
из окна Window веб-браузера
Во-первых, я рекомендую сделать вашу жизнь проще, придерживаясь исключительно API-интерфейсов NativeScript. Вам не нужно 2000 строк Axios, чтобы сохранить несколько нажатий клавиш. Документация Axios убедила вас, что вы должны использовать метод querystring.stringify()
для передачи параметров запроса вместе с вашим запросом. К сожалению, объект querystring
является объектом NodeJS и может или не может быть доступен во время выполнения Android / iOS. Так что уничтожь Аксиоса и сделай свою жизнь проще.
Наконец, убедитесь, что вы не используете код, предназначенный для работы только в браузере (например, alert()
) или только в NodeJS (но не в собственных средах выполнения).
Чтобы обеспечить публикацию работ, используйте API-интерфейс HTTP NativeScript, который задокументирован здесь:
https://docs.nativescript.org/ns-framework-modules/http
Измените свой код на это:
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
я отредактировал код, чтобы учесть это.