我正在使用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; });
我没有使用过您使用的插件,但是如果您使用jQuery Ajax命令,则会收到XMLHttpRequest对象作为complete事件的参数。然后,您可以从返回的HTTP标头中获取发布URL。尝试以下方法:
complete
$.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]); } } } });
此代码是从此线程复制的。