2009-11-03 31 views
5

मैं AJAX के माध्यम से एक फॉर्म (एक संवाद में) सबमिट करने के लिए AJAX फॉर्म jquery प्लगइन का उपयोग कर रहा हूं।jquery AJAX फ़ॉर्म - रीडायरेक्ट यूआरएल कैसे प्राप्त करें?

यह ठीक काम करता है और फिर मुझे सर्वर से एचटीएमएल प्रतिक्रिया वापस मिलती है। प्रतिक्रिया मानक रीडायरेक्ट-पोस्ट-पोस्ट php पेज से आती है जिसे मैं संशोधित नहीं कर सकता।

jquery (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; 
    }); 

उत्तर

2

मैं उपयोग नहीं किया है प्लग में प्रयोग कर रहे हैं, लेकिन अगर आप jQuery Ajax command उपयोग करते हैं, आप XMLHttpRequest ऑब्जेक्ट complete घटना के लिए एक पैरामीटर के रूप प्राप्त करते हैं। फिर आप उस HTTP यूआरएल से पोस्ट यूआरएल प्राप्त कर सकते हैं जो लौटाता है। निम्नलिखित का प्रयास करें:

$.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 से नकल किया गया था।

+0

मैंने पूर्ण हैंडलर + xhr.getResponseHeader या getAllResponseHeaders के साथ प्रयास किया है और यह 'अपरिभाषित' देता है। अगर मैं console.log (xhr) करता हूं तो यह प्रिंट करता है: ऑब्जेक्ट aborted = 0 (भले ही connetion अच्छी तरह से चला जाता है) – gpilotino

+0

अजीब। तब xhr ऑब्जेक्ट में क्या होता है? –

+0

ऐसा लगता है कि यह "iframe" विकल्प के साथ उपयोग किए जाने पर AJAX फ़ॉर्म प्लगइन का "बग" था (यह एक xhr mock ऑब्जेक्ट का उपयोग करता है)। एक बार उस विकल्प से छुटकारा पाने के लिए अब मुझे सही http शीर्षलेख मिलते हैं लेकिन "स्थान" हेडर गुम है इसलिए मुझे अभी भी यूआरएल नहीं मिला है। – gpilotino

संबंधित मुद्दे