首先,讓我說,我知道這似乎並不是一個罕見的問題。我不打算用這些已經回答的問題來混淆這些論壇,但是,我已經完成了大概三十多個有類似問題的線索,並且一直未能找到解決方案。標題(位置:)通過AJAX不重定向
我的問題的簡短描述是這樣的:我試圖在使用php的頭(位置:)函數提交表單後重定向,並且它不重定向。這有點複雜,因爲表單是通過AJAX提交的。我的代碼經過的步驟如下:
用戶提交表單>通過AJAX發送的表單數據>表單處理頁面驗證數據>如果有效,表單處理頁面將數據插入數據庫>如果提交成功,表單處理頁面添加重定向URL到$ _SESSION>表單處理頁面返回一個'重定向'變量> javascript/AJAX檢查重定向變量,並刷新頁面,如果找到>頁眉檢查重定向URL $ _SESSION,如果找到,設置適當的標題和退出。
我猜我想問的第一件事是,這是正確的方式去做這件事嗎?在我看來,應該有一個更簡單的方法來做到這一點。顯然,將重定向URL傳遞給javascript並執行window.location重定向要簡單得多,但我讀到在服務器端處理它好得多/更安全,所以我正在嘗試這樣做。
假設我正朝着正確的方向前進,可能會出現什麼問題?我檢查過前後的空格,BOM字符,我甚至嘗試過輸出緩衝,我仍然有同樣的問題。
表單提交會發生什麼,頁面刷新,但它返回到原始表單頁面,而不是重定向url。我已經打開了最詳細的錯誤報告,並沒有得到任何錯誤。
有一件事情可能感興趣,也可能不感興趣,我設置了一個error_log函數,在設置Location:標題後立即將所有標題記錄到文件中。當我在AJAX之外重定向(工作)時,accept:頭被設置爲html,但是當我嘗試通過AJAX完成時,accept頭被設置爲JSON。這會導致問題嗎?
非常感謝您抽出時間,並再次表示道歉,如果這是一個愚蠢的問題。我已經使用了這個論壇多年,並且從來沒有提過一個問題,因爲它直到現在一直解決我的問題。提前致謝!
'window.location'與發送頭中的位置一樣好。無論如何,你無法控制客戶實際上做了什麼。只有使用ajax時,才能通過PHP更改原始頁面位置。去JS或不使用Ajax。 – m02ph3u5