2012-08-05 69 views
1

所以我最近了解到,如果您使用jquery $.post回發到PHP腳本,那麼您不能在該腳本中執行@header重定向(即使您在它之後立即使用exit();)。jquery post後使用PHP重定向

這是非常令人沮喪的消息,因爲我有一個重要的重定向/ Flash消息類,我在表單提交成功執行後使用了很多。

事實上,jQuery的帖子是「貪婪」,不讓PHP腳本中斷它是一個巨大的侷限性。

有誰知道一個解決方案,將讓我ajax張貼表單數據回到PHP,然後在PHP內重定向?在JavaScript中複製重定向/ Flash消息類對我來說不是一個真正的選擇。

有誰知道解決這個問題的方法嗎?

回答

0

您的腳本重定向,您的JavaScript(jQuery)從我認爲的重定向中獲得結果,或者您的返回包含302:重定向標頭。

由於您的腳本使用自己的請求,因此您告訴其執行的重定向不會更新瀏覽器,並且該功能將不會存在。您必須在客戶端代碼中響應來自服務器的請求標頭,以響應您想要執行的任何操作。

0

您可以使用成功功能來重定向瀏覽器。

$.post(url, data, function() { 
    window.location = newUrl; 
}); 

http://api.jquery.com/jQuery.post/

+0

不幸的是,這正是我不想要做的。我使用Smarty進行模板化,並且我有一個全局的Flash消息,它由PHP通過我的重定向類設置。 如果我正在通過客戶端代碼進行重定向,那麼我無法設置該消息,打破了我的預期用戶體驗。 – AgmLauncher 2012-08-05 15:00:21

0

@ bcmcfc的解決方案是最好的,但如果你需要重定向之前更多的互動或計算,你可以看看xajax。他們的文檔很厚實,但它是用戶體驗設計師的夢幻應用程序,填補了您所描述的空白。