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