jquery ajax表单 - 如何获取重定向url?

时间:2009-11-03 09:25:44

标签: javascript jquery ajax

我正在使用ajax表单jquery插件通过ajax提交表单(在对话框中)。

这工作正常,然后我从服务器返回html响应。响应来自一个标准的重定向后发布的php页面,我无法修改。

有没有办法使用jquery(在ajax回调中)获取此重定向的url(最终的GET位置)?

  $j('span.sfAutocomplete a').click(function(e){
    var url = this.href;
    var $dialog = $j('<div id="ajaxDialog"></div>').appendTo('body')
    .load(
      url,
      'sfAutocomplete=true',
      function (responseText, textStatus, XMLHttpRequest) {
        $dialog.dialog({ autoOpen: true });
        //
        //  Ajax submit
        //
        $j('#ajaxDialog form').submit(function() {
          function showResponse(responseText, statusText) {

             // how to get the redirect url ?

          }
          $j(this).ajaxSubmit({
            success: showResponse
          });
          return false; 
        }); 
      }
    );
    return false;
  });

1 个答案:

答案 0 :(得分:2)

我没有使用您正在使用的插件,但如果您使用jQuery Ajax command,则会收到XMLHttpRequest对象作为complete事件的参数。然后,您可以从返回的HTTP标头中获取帖子URL。请尝试以下方法:

$.ajax({
  url:'your.url',
  data:'your data',
  complete: function(xhr,textstatus) {
    // xhr.responseText contains the response from the server
    var allheaders = xhr.getAllResponseHeaders();
    // this will get all headers as a string - if you want them as an object...
    var eachheader = allheaders.split('\n');
    var headers = {};
    for(i = 0; i < eachheader.length; i++) {
        if ($.trim(eachheader[i]) !== '') {
            headersplit = eachheader[i].split(':');
            headers[headersplit[0]]=$.trim(headersplit[1]);
        }
    }
  }
});

此代码是从this thread复制的。