2013-12-11 46 views
1

很新的,一般以代碼,以便提前道歉,如果我不好好解釋一下自己,的JavaScript/AJAX重定向問題

但是我有一個形式,即動作一段JavaScript上提交。

如果表單驗證成功,那麼它會調用一個php文件進行服務器端處理。

一旦服務器端處理完成後,php文件返回一些數據(URL),用戶然後被重定向到(客戶端)

這一切工作正常在桌面上(鉻,IE,FF)和通過現代移動設備,但是重定向在某些設備(黑莓)上不起作用,並且ai採用其他較舊的設備。而不是重定向網址直接進入地址欄,它被放置在原始頁面的URL之後 - 因此導致用戶被重定向到當然不存在的頁面。

以下是在提交時調用的腳本。如果以上都不是有道理再次道歉......我很新的這一切:

$(function() { 
    $('#wait').hide(); 
    $('form#leads_form').on('submit', function (e) { 
     if (validateFrm()) { 
      $(":submit", this).attr("disabled", true); 
      $('#wait').show(); 
      var jqxhr = $.ajax({ 
       type: 'post', 
       timeout: 300000, 
       url: 'sell-save-leads.php', 
       cache: false, 
       data: $('form').serialize(), 
       success: function (data) { 
        //alert("Submit success: " + data); 
        window.top.location.href = data; 
       } 
      }); 
     } else { 
      //alert("validation errors"); 
      $('#wait').hide(); 
     } 
     e.preventDefault(); 
    }); 
}); 

如果有人能夠幫助或提供一些建議,這將是巨大的。

回答

0

當你的表單位於一個iFrame我建議你使用這個jQuery插件從一個iframe將消息發送到它的父: http://benalman.com/projects/jquery-postmessage-plugin/

有了這個,你可以從發送消息的success函數中,含新的url,並在父window中捕獲它。

+0

您好。感謝您的回覆。我確實嘗試了我的想法。我使用window.top.location的原因是我有一個iframe中的窗體,並使用window.location重定向停留在iframe,而我需要它跳出iframe然後重定向(如果這是有道理的)。但我會再試一次。 – user3091415

+0

你使用jQuery嗎?如果是的話,你可以使用這個插件發送消息從一個iframe到其父:http://benalman.com/projects/jquery-postmessage-plugin/ – RononDex

+0

嗨,我使用的是jquery 1.9。我會將此插件添加到我的網站嗎? – user3091415