Stripe Charge 承诺没有解决
Stripe Charge promise doesn't resolve
我正在从 StripeCheckout.configure({ })
对 token
参数进行 AJAX 调用,如下所示:
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)
})
}
正如您从评论中看到的那样,charge 函数中的 data
是正确的,但是在那个 promise 和最初的 AJAX 调用之间,它丢失了并且 AJAX打电话什么也得不到。如果我在 Chrome devtools 中查看网络请求,它说 charge
收到数据但是 AJAX 调用超时,因为它没有收到响应数据。
我想我看这个太久了,可能犯了一个非常简单和愚蠢的错误。
在评论中@Bergi 的帮助下解决了这个问题(感谢 Bergi!)。
这是对我有用的代码,将更新从 promise 发送回原始 Ajax 请求:
const charge = (req, res) => {
// rest of the promise
.then((data) => {
res.json(data)
})
}).catch((err) => {
console.log(err)
})
}
主要是因为 AJAX 请求正在访问页面(在我的例子中是 /charge
),正在执行获取数据的工作,但返回它什么都不做,因为,就像在前端应用程序中一样,除非您正在对它做一些事情(分配给一个变量,运行 另一个函数使用该数据等),否则它会丢失。需要输出到页面,格式为JSON,这样请求才能看到。
我正在从 StripeCheckout.configure({ })
对 token
参数进行 AJAX 调用,如下所示:
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)
})
}
正如您从评论中看到的那样,charge 函数中的 data
是正确的,但是在那个 promise 和最初的 AJAX 调用之间,它丢失了并且 AJAX打电话什么也得不到。如果我在 Chrome devtools 中查看网络请求,它说 charge
收到数据但是 AJAX 调用超时,因为它没有收到响应数据。
我想我看这个太久了,可能犯了一个非常简单和愚蠢的错误。
在评论中@Bergi 的帮助下解决了这个问题(感谢 Bergi!)。
这是对我有用的代码,将更新从 promise 发送回原始 Ajax 请求:
const charge = (req, res) => {
// rest of the promise
.then((data) => {
res.json(data)
})
}).catch((err) => {
console.log(err)
})
}
主要是因为 AJAX 请求正在访问页面(在我的例子中是 /charge
),正在执行获取数据的工作,但返回它什么都不做,因为,就像在前端应用程序中一样,除非您正在对它做一些事情(分配给一个变量,运行 另一个函数使用该数据等),否则它会丢失。需要输出到页面,格式为JSON,这样请求才能看到。