我有一个单页订购表单。用户填写我们的表单,javascript验证所有内容,如果它通过ajax请求将命中服务器并在点击提交时通过Stripe向客户收费。
如果收费成功,json将返回到ajax请求({success:true}
)。然后,用户被重定向到成功页面,或者如果在为卡充电时发生了某些事情,则会显示错误。
我正在尝试处理用户请求命中服务器的(罕见)问题,用户成功收费,但在响应时用户收到错误(很可能是移动/不稳定连接上的超时错误)。如何防止用户被双重收费?下面是我的ajax请求,但也许我需要重新考虑我的整个基础架构?
$.ajax({ type : 'POST',
url : '/order',
data : $(':input').serialize(),
timeout : 30000,
dataType : 'json',
success : function (data) {
// redirect user to success page
window.location = '/completed';
},
error: function(xhr,status,error) {
// report the error to user.
} });
答案 0 :(得分:0)
试试这个..
$.ajaxSetup({
type : 'POST',
url : '/order',
data : $(':input').serialize(),
timeout : 30000,
dataType : 'json',
success : function (data) {
// redirect user to success page
window.location = '/completed';
},
error: function(xhr,status,error) {
if (xhr.status == 408) {//For Timeout
alert("Sorry, Request timeout.!");
window.location.href ="//specify a redirect url//";
}
else {
alert("An error occurred: " + status + "nError: " + error);
}
} });