代码之家  ›  专栏  ›  技术社区  ›  Stian

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

  •  1
  • Stian  · 技术社区  · 16 年前

    我使用jquery和ajax将内容从链接和表单加载到content div中。此外,我还使用address插件启用back按钮和刷新。在服务器端,我使用Java和Spring MVC。

    因为我使用的是jquery address和ajax,所以直接加载的惟一页面是“index.html”。其他所有内容都加载到content div中,要加载的页面在散列中指定,即“index.html 35;/users/add.html”将加载“users/add.html”。

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

    有办法解决这个问题吗?

    谢谢,
    什蒂安

    3 回复  |  直到 14 年前
        1
  •  0
  •   Community Mohan Dere    9 年前

    看看新的表单示例。这是非常基本的,但可能是有用的。 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
  •   Community Mohan Dere    9 年前

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

    我在另一个问题中重新提出了这个问题,没有得到答案,但我自己找到了解决办法。:)

    AJAX - Get response URL after redirect

        3
  •  0
  •   Darren user513543    14 年前

    首先我这样初始化我的表单:

      $('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不是一个很好的方法,但是我暂时没有找到其他的方法。这段代码没有经过测试,我只是从自己的代码中提取了一部分。

    推荐文章