jQuery地址 - 表单提交后重定向

时间:2010-04-08 11:27:21

标签: java jquery forms deep-linking

我使用jQuery和AJAX将链接和表单中的内容加载到内容div中。另外我使用Address插件启用后退按钮并刷新。在服务器端,我使用Java和Spring MVC。

由于我使用的是jQuery Address和AJAX,因此直接加载的唯一页面是“index.html”。其他所有内容都被加载到内容div中,并且要在哈希中指定要加载的页面,即。 “index.html#/ users / add.html”将加载“users / add.html”。

现在,“users / add.html”包含用于创建新用户的表单。提交表单并且一切正常后,控制器将重定向到“users / index.html”。问题是jQuery Address不知道重定向,所以url将保持“index.html#/ users / add.html”。当您刷新页面然后将其发送回表单而不是索引页面时,这是一个问题。

有没有办法解决这个问题?

谢谢,
了Stian

3 个答案:

答案 0 :(得分:0)

首先,我这样初始化我的表格:

  $('FORM').submit(function () { 
     shareData = $(this).serializeArray();     
     $.address.value($(this).attr('action'));
  })

在我的改变方法中有类似的东西:

$.address.change(function(event) {

    if (event.path != '/' && event.parameters.layout_to_use != undefined) {

        // if no json, load don't do a post request
        shareData = _arrayToJson(shareData);;

        $('#areatoreload')
            .html('<span style="background-color:red;">loading...</span>')
            .load('myscript.php', shareData, function() {});
    }
    return false;
});

我以同样的方式管理我的链接。我希望它可以帮到你。 shareData不是一个很好的方法,但我目前还没有找到别的东西。这段代码没有经过测试,我只是提取了自己代码的一部分。

答案 1 :(得分:0)

查看新的表单示例。这是非常基本的,但可能会有用。 http://www.asual.com/jquery/address/samples/form/

在您的情况下,您将无法使用$('form')。address()函数,因为您需要在服务器响应返回后更改地址。

您可以使用data.redirect属性来检测潜在的响应重定向: How to manage a redirect request after a jQuery Ajax call

答案 2 :(得分:0)

我意识到我对问题的描述不是最好的,为此道歉。

我在另一个问题中重新解决了问题,得不到答案,但我自己找到了解决方案。 :)

AJAX - Get response URL after redirect