AJAX调用后的渲染问题

时间:2015-11-03 12:23:50

标签: ajax redirect browser

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

首先,如果我将/ test_redirect中的简单重定向定义为/ x,则可以正常工作。因此,对简单案例工作的瓶子重定向()。

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

/ stripe_process做它的东西(调用Stripe给卡充电)然后当交易成功时,我使用指示瓶来:

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网络部分,我会转到上一个操作(即/ transaction_summary下载)并在新标签页中打开/ transaction_summary,它会完美呈现。
所以它不是瓶子问题,也不是网络服务器。我怀疑更多关于Stripe结帐模式/弹出行为

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

编辑:
如果我用直接返回模板()替换 redirect(),同样的问题:浏览器下载html内容,可以预览,但不能在主窗口上呈现。< / p>

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

1 个答案:

答案 0 :(得分:2)

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

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