python-2.7 - 如何使用 ajax 函数重定向到另一个页面,而无需将该页面回调到 ajax 函数参数目标 div?
问题描述
我正在使用 ajax 函数从视图上的文本字段上的用户获取注册密钥到控制器,应该发生的是,如果注册密钥有效,则应将用户重定向到另一个页面,允许他们正常使用应用程序. 执行重定向的控制器函数不会重定向到新页面,而是会在目标 div 中打开用户应重定向到的页面,该页面应显示错误代码消息。如果注册密钥按预期正确,我如何覆盖这种情况并能够将用户重定向到一个全新的页面,并且在需要时仍然能够在相关 div 中显示不正确的代码消息?
风景
<div id="code">
<input id="regcode" maxlength="10" type="text" class="field" name="regCode" autocomplete="off" onkeyup="ajax('product_key_entry', ['regCode'], 'regCodeTarget')" placeholder="Enter Product Key"/><br />
<div id="regCodeTarget"></div>
控制器
def reg_key_entry():
key_exists = not db(db.regKeys.regKey == request.vars.regCode).isempty()
if key_exists:
#A used reg key should get deleted so that it cant be used twice
db(db.regKeys.regKey == request.vars.regCode).delete()
redirect(URL('index'))
else:
return DIV("INCORRECT PRODUCT KEY", _id="regCodeTarget", _style="color: white; border: solid 1px red; width: 160px; background-color: red; font-weight: bold; padding: 3px; border-radius:5px;")
我希望实现的是让用户在输入正确的注册密钥时被重定向到新定义的页面,而不是现在当注册密钥正确时,他们应该被重定向到的页面被调用到目标 div在同一个页面中,他们应该被重定向!
解决方案
你可以做:
redirect(URL('index'), client_side=True)
使用client_side=True
,而不是服务器返回 303 重定向响应,它返回一个特殊的标头,客户端 Javascript 处理重定向(通过更改window.location
)。
请参阅http://web2py.com/books/default/chapter/29/04/the-core#HTTP-and-redirect。
推荐阅读
- asp.net-core - 为什么 FileExtensionContentTypeProvider 不适用于 .min.js 扩展?
- c++ - 如何修复“在抛出 'std::logic_error'what() 实例后调用终止:basic_string::_M_construct null not valid”异常?
- java - 尽管使用 JavaFX 库,但 Javafx 无法在 Eclipse 中解析
- algorithm - 具有二次和线性运行时间的排序算法
- android - Android adb shell 中的 pm list 包出错
- android - 我无法从具有 2 个按钮的片段中创建新的意图/活动
- ubuntu - 服务器上的 Solr HTTP 错误,HTTP 请求失败
- python - 为列表中的所有值添加一个键
- c# - 如何从他的左右字符串中解析一个字符串
- python - Odoo 安装错误:psycopg2.errors.UndefinedTable: 关系“ir_module_module”不存在