来自ajax jquery调用的重定向与渲染的问题

时间:2017-12-01 00:30:06

标签: javascript jquery ajax grails

这就是我的js的样子,

$.ajax({
    url: "/traffic/validateParams",
    data: JSON.stringify(data),
    type: 'post',
    contentType: 'application/json; charset=utf-8',
    success: function (d) {
        if(d == "") {
            $.ajax({
                url: "/traffic/update",
                data: JSON.stringify(data),
                type: 'post',
                contentType: 'application/json; charset=utf-8'
            });
        } else {
            alert(d);
            btn.removeAttr("disabled");
        }
    }
});

这里,如果数据验证不正确,validateParams将返回错误消息,否则调用update方法。

我的问题从这里开始,使用更新方法。下面是相同方法的两个代码,重定向的代码不起作用,带渲染的代码也可以正常工作。

重定向代码:

def update() {
    def p = (request.JSON ?: params)?.subMap(TrafficSimulatorConstant.params.keySet())
    TrafficSimulatorConstant.updateParams(p)
    log.info("traffic simulator configured")
    redirect(action: "status") }

此处,在上面的代码中,即使值是更新,也没有重定向到状态页面。而且,该按钮未启用。

带渲染的代码:

def update() {
    def p = (request.JSON ?: params)?.subMap(TrafficSimulatorConstant.params.keySet())
    TrafficSimulatorConstant.updateParams(p)
    log.info("traffic simulator configured")
    String url = createLink(action:"status")
    render(text: "window.location.href='${url}'", contentType: "application/javascript") }

此处,值将更新,页面将重定向到状态页面。按钮启用/禁用无关紧要,因为它是页面重定向,我们有一个新页面。

我想了解这两种实现之间的区别,并且想知道是否有办法通过重定向实现相同的行为?

提前致谢。

0 个答案:

没有答案