AJAX调用后的渲染问题

我正在使用Bottle微框架(但我怀疑我的问题来自它)

首先,如果我从/ test_redirect定义一个简单的重定向到/ x它的工作原理.因此,对简单案例工作的瓶子重定向().

现在我有一个页面/购买使用Stripe Checkout(自定义表单)指向我的server / stripe_process
基本上Stripe Checkout验证信用卡交易,创建一个令牌并将其POST到我的/ stripe_process.

/ stripe_process做它的东西(调用Stripe来充值卡)然后当事务成功时,我使用指示Bottle来:

redirect('/transaction_summary')

我的网络服务器日志显示确实调用/ transaction_summary并处理服务器端脚本(我在我的脚本中放置标志来检查),并返回其模板(浏览器’网络’分析给出303然后200 on / transaction_summary,我甚至得到正确的响应数据:似乎100%正常),但在浏览器页面上没有任何反应(我仍然在url字段中有我的初始页面/购买,而不是被重定向到/ transaction_summary):浏览器收到/ transaction_summary响应,预览在Chrome devtools预览模式下可见,但未显示!

另外,如果在/ stripe_process中我使用简单的返回模板()更改redirect(),同样的问题:浏览器不处理任何数据.

任何线索?在100%我的测试中观察到这种行为:
– Firefox / Windows
– Chrome / iOS 9(iPad)
– Chrome / linux
– Iceweasel / linux
– Chrome / Android
– Chrome / OSX

我怀疑它与Stripe Checkout接管某些东西有关(因为redirect()在我的简单测试中完美运行),但我无法弄清楚原因以及如何解决这个问题.

如果从Chrome-devtools-network部分我转到最后一个操作(即/ transaction_summary下载)并在新选项卡中打开/ transaction_summary,它将完美呈现.
所以它不是瓶子问题,也不是网络服务器.我怀疑更多关于Stripe结帐模式/弹出行为

$(window).on(‘popstate’,function(){handler.close();});作为条带文档指示存在,但无论如何stripe_handler在收到令牌后正确关闭(我使用handler.closed回调检查…)

编辑:
如果我用直接返回模板()替换redirect(),同样的问题:浏览器下载html东西,可以预览,但不能在主窗口上渲染.

EDIT2:
如果我在我的页面上添加一个href到/ test_redirect重定向到/ x它的工作原理.
请注意,此手动重定向在Stripe结帐后工作.这里与Stripe序列的唯一区别是用户交互(在href上’点击’),但由于我的重定向是同一个域,浏览器不应该阻止重定向.

最佳答案 问题是用于将Stripe令牌发送到/ stripe_process的AJAX调用正在处理重定向响应.这就是为什么在网络上我从网络服务器获得了200个答案,但是所有的html页面数据都进入了AJAX回调并进行了渲染.感谢托马斯从这个问题中抬起头来.

解决方案是/ stripe_process在成功的情况下返回1(而不是服务器端redireciton),然后从AJAX成功回调重定向.

点赞