Javascript Nativescript Vue MobileApp:Axios返回状态:null,数据:“0”&引用;
我正在使用Nativescript Vue制作一个本机应用程序,在我的第一个组件中,我启动了一个简单的post请求,它肯定能工作(我在桌面版本上测试了它)。但由于我忽略的一个原因,我的回答有一个问题。我的响应向我显示请求已成功发送参数,但我得到的状态为null,数据为:“”。你们中的一些人知道我如何解决这个问题吗 对于正在阅读本主题的任何人,感谢您抽出时间,任何线索都是值得欣赏的:)Javascript Nativescript Vue MobileApp:Axios返回状态:null,数据:“0”&引用;,javascript,vuejs2,axios,nativescript-vue,Javascript,Vuejs2,Axios,Nativescript Vue,我正在使用Nativescript Vue制作一个本机应用程序,在我的第一个组件中,我启动了一个简单的post请求,它肯定能工作(我在桌面版本上测试了它)。但由于我忽略的一个原因,我的回答有一个问题。我的响应向我显示请求已成功发送参数,但我得到的状态为null,数据为:“”。你们中的一些人知道我如何解决这个问题吗 对于正在阅读本主题的任何人,感谢您抽出时间,任何线索都是值得欣赏的:) 嗨,维克曼,欢迎来到SO 因为您试图同时使用来自三个不同平台的三个不同API,所以您感到困惑。这就是我的意思:
嗨,维克曼,欢迎来到SO 因为您试图同时使用来自三个不同平台的三个不同API,所以您感到困惑。这就是我的意思:
querystring
对象alert()
函数querystring.stringify()
方法在请求时传递查询参数。不幸的是,querystring
对象是一个NodeJS对象,在Android/iOS运行时中可能可用,也可能不可用。因此,消除Axios,让您的生活更轻松
最后,确保您使用的代码不是设计为仅在浏览器中工作的代码(如alert()
)或仅在NodeJ中工作的代码(但不是本机运行时)
为确保发布工作正常,请使用此处介绍的NativeScript HTTP API:
将代码更改为:
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环境中工作
编辑:在阅读了您关于设备和警报的评论后,我编辑了代码以适应这种情况。@RandyCasburn感谢您的回复Randy Casburn先生,我没有从API中得到任何错误。 我与一位同事讨论了这个话题,他告诉我,使用您提供给我的代码,API不会收到请求。他认为这是因为您将内容类型设置为application/json,我们的API只接受application/x-www-form-urlencoded,之后我尝试了您的方法,将内容类型更改为application/x-www-form-urlencoded,但没有得到响应,我不确定是否收到了请求。 我们使用Express API,调用是通过axios进行的。
我的本机应用程序的代码与我的桌面浏览器的代码相同,但我已将其从本机应用程序中删除。如果您正在android设备上测试API,请确保您的post请求返回一些内容(即使只是一条成功消息)。在IOS上不需要它,但由于某些原因,在Android上如果没有数据返回,请求返回
请求失败,状态代码为null
我也遇到了同样的问题。我将axios版本更新为0.19.0。问题已解决如果您不添加您发布的URL和/或BE代码,我们无法确定问题所在。感谢Randy Casburn的回复!没有什么特别的原因,我使用axios是因为我练习得最多,但明天我将尝试使用Nativescript和thnak提供的http Api,非常感谢您的建议:)对于alert(),我知道这听起来很疯狂,但我使用的是真正的设备,所以我无法控制台.log(),这就是我使用alert()进行调试的原因,同时也感谢你的第二个建议:)我把我的评论变成了对你的回答。非常感谢你的回答和你的时间,先生!主要是您的方法救了我,我想感谢您,不幸的是,我仍然得到一个空数组作为响应,我不明白为什么,首先我认为这可能是API方面的一个问题,但我现在确定API正在工作properly@Vikman-需要更多信息。是否收到来自API的错误?什么API?本土、商业、谷歌、AWS?最后,详细描述NativeScript应用程序中不工作的代码与“桌面”代码之间的差异。
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));
});