0
我在token
参数进行AJAX调用从StripeCheckout.configure({ })
,像这样:条纹充电承诺不能解决
StripeCheckout.configure({
...,
token: function(stripeToken) {
$.post(url, {
// post data
}, function(data) {
console.log("data", data);
return data;
});
}
});
在接收AJAX调用的URL(我们称之为/charge
),我有这样的代码:
const charge = (req, res) => {
const {
// get AJAX post data, e.g amount, description, STRIPE_TOKEN, etc
} = req.body
return stripe.charges.create({
amount: amount,
currency: 'gbp',
source: STRIPE_TOKEN,
description: description,
})
.then((charge) => {
const {params} = charge // get various parameters from the successful charge data to be passed into book()
return book(params) // promise function which goes to an external provider
.then((data) => {
return data // data returns from book and is then lost between here and the original AJAX callback
})
}).catch((err) => {
console.log(err)
})
}
,你可以从注释中看到,在充电功能的data
是正确的,但后来这一承诺和原来的AJAX调用之间,它失去了和AJAX调用将一无所获。如果我查看Chrome devtools中的网络请求,它会说charge
收到数据,但由于AJAX呼叫未收到响应数据,因此超时。
我想我一直在寻找这个太长时间,并可能犯了一个超级简单而愚蠢的错误。
a)您不''从'then'回调''返回'book(...)'承诺b)您在哪里写回应? – Bergi
嗨@Bergi,谢谢我添加了返回英寸我也意识到我忘了添加一个'console.log'到AJAX调用来写入返回的数据(在我的代码中,但没有在这里)。然而,有了这两个补充,它仍然没有返回任何东西:( –
'console.log'写入控制台,而不是HTTP响应。您可能需要类似'res.json(data)'(但我不知道Stripe API) – Bergi