如何使用 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。

相关内容

  • 没有找到相关文章

最新更新