我在example.com/api.php上运行了一些api
为了将 api 与 ajax 一起使用,我使用以下代码:
$.ajax({
url: 'https://example.com/api.php',
method: 'post',
data: {'pass': 'mypass', 'action': 'someaction'},
}).done(function(results){
//results = JSON.parse(results); //no need to parse it!
console.log(results);
});
})
我试图用 node.js 实现同样的事情,但我不知道如何发送数据。
我尝试了很多方法,这是其中之一:
axios.post('https://example.com/api.php', {
'pass': 'passs',
'action': 'myaction'
})
.then((res) => {
console.log(`statusCode: ${res.statusCode}`)
console.log(res)
console.log(`statusCode: ${res.data}`)
})
.catch((error) => {
console.error(error)
})
但我根本无法让它工作!res.statusCode 返回 undefined 而 res.data 根本不返回任何内容。服务器记录每个用户尝试通过 api 执行的操作。php api 有这样的东西:
if($_POST['pass']== thePassword && $_POST['action']=='aSpecifiAction'){
// log the action,
//execute the action
}
我的操作没有出现在日志中,这意味着我的 axios 代码没有向 api 发送任何数据。那么如何让它表现得像上面的 jquery 代码呢?
使用 axios 不是必须的,如果有更简单的请求或任何其他模块的解决方案,那就没问题了。
提前致谢
有人在github上帮我找到了问题。问题是“jQuery 默认对 POST 数据使用 application/x-www-form-urlencoded 格式,而 axios 默认使用 JSON”
在这个链接中,他们详细解释了https://www.npmjs.com/package/axios#using-applicationx-www-form-urlencoded-format
解决方案 :
const axios = require('axios')
const qs = require('qs');
axios.post('https://example.com/api.php', qs.stringify({
'pass': 'passs',
'action': 'myaction'
}))
.then((res) => {
console.log(`statusCode: ${res.statusCode}`)
console.log(res)
console.log(`statusCode: ${res.data}`)
})
.catch((error) => {
console.error(error)
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句