2009-11-03 11 views
5

sto usando un plugin jquery di forma jax per inviare un modulo (in una finestra di dialogo) tramite ajax.jquery ajax form - come ottenere l'url di reindirizzamento?

funziona correttamente e quindi ottengo la risposta HTML dal server. la risposta proviene da una pagina php standard redirect post-post che non posso modificare.

c'è un modo per ottenere l'url di questo reindirizzamento (l'ultima posizione GET) utilizzando jquery (all'interno del callback ajax)?

$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; 
    }); 

risposta

2

Non ho usato il plug-in che si sta utilizzando, ma se si utilizza il jQuery Ajax command, si riceve l'oggetto XMLHttpRequest come parametro per l'evento complete. È quindi possibile ottenere l'URL del post dall'intestazione HTTP restituita. Provare quanto segue:

$.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]); 
     } 
    } 
    } 
}); 

Questo codice è stato copiato da this thread.

+0

ho provato con il gestore completo + xhr.getResponseHeader o getAllResponseHeaders e restituisce 'undefined'. se faccio console.log (xhr) stampa: Oggetto interrotto = 0 (anche se la connessione va bene) – gpilotino

+0

Strano. Cosa contiene allora l'oggetto xhr? –

+0

sembra che fosse un "bug" del plugin del modulo ajax quando usato con l'opzione "iframe" (usa un oggetto mock xhr). una volta eliminata questa opzione ora ottengo le intestazioni http corrette ma manca l'intestazione "Location" quindi non riesco ancora a ottenere l'URL. – gpilotino

Problemi correlati