【问题标题】:jquery ajax form - how to get the redirect url?jquery ajax 表单 - 如何获取重定向 url?
【发布时间】:2009-11-03 09:25:44
【问题描述】:

我正在使用 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;
  });

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    我没有使用您正在使用的插件,但是如果您使用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 复制的。

    【讨论】:

    • 我已尝试使用完整的处理程序 + xhr.getResponseHeader 或 getAllResponseHeaders,它返回“未定义”。如果我执行 console.log( xhr ) 它会打印: Object aborted=0 (即使连接顺利)
    • 奇怪。那么 xhr 对象包含什么?
    • 当与“iframe”选项一起使用时,它看起来像是 ajax 表单插件的“错误”(它使用 xhr 模拟对象)。一旦摆脱该选项,现在我得到了正确的 http 标头,但“位置”标头丢失了,所以我仍然没有得到 URL。
    • post操作返回的页面有什么特别之处吗?是否主动操纵 HTTP 标头? (即,添加 cookie、更改内容类型等?)
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2022-01-11
    • 1970-01-01
    • 2021-12-16
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多