假設我在一個靜態頁面
mine.html 中用 ajax 請求介面URL
ajax_mine.php
在
ajax_mine.php 中包含一個函數,
getParamsFromService(),這個函數裡的代碼是這樣的:
$url_referer = 'http://'.$domain.$_SERVER['REQUEST_URI']; header("Location: http://{$domain}/index.php?g=Wap&m=Api&a=checkLogin&scope={$scope}&token={$token}&from=".urlencode($url_referer)); exit;
我們向 ajax_mine.php發送ajax請求時,這個介面會發生一次跳轉,這個跳轉的目標URL在收到請求後,處理完邏輯,又會跳回到請求的 url_referer 參數中的url。
也就是說,我們請求的介面地址 ajax_mine.php 內部是發生了一次跳轉和返回的跳轉的動作,這個時候,我發現這個介面原本應該返回資料卻變成空的。是不是介面的PHP檔案內部發生跳轉都是無效的呢?
/------- 補充 2014-11-07 -------/
可能大家誤會我提問的意思了。我知道應該返回狀態,在用戶端跳轉,我其實想知道的是服務端跳轉後,再傳回值給用戶端為什麼不行?原理是什嗎?
回複內容:
假設我在一個靜態頁面 mine.html 中用 ajax 請求介面URL ajax_mine.php
在ajax_mine.php 中包含一個函數,getParamsFromService(),這個函數裡的代碼是這樣的:
$url_referer = 'http://'.$domain.$_SERVER['REQUEST_URI']; header("Location: http://{$domain}/index.php?g=Wap&m=Api&a=checkLogin&scope={$scope}&token={$token}&from=".urlencode($url_referer)); exit;
我們向 ajax_mine.php發送ajax請求時,這個介面會發生一次跳轉,這個跳轉的目標URL在收到請求後,處理完邏輯,又會跳回到請求的 url_referer 參數中的url。
也就是說,我們請求的介面地址 ajax_mine.php 內部是發生了一次跳轉和返回的跳轉的動作,這個時候,我發現這個介面原本應該返回資料卻變成空的。是不是介面的PHP檔案內部發生跳轉都是無效的呢?
/------- 補充 2014-11-07 -------/
可能大家誤會我提問的意思了。我知道應該返回狀態,在用戶端跳轉,我其實想知道的是服務端跳轉後,再傳回值給用戶端為什麼不行?原理是什嗎?
看下ajax 的狀態應該是顯示 302了....之前遇到類似的問題
你服務端的代碼就不要做成 跳轉到另外一個頁面處理資料然後返回資料, 而是做成服務介面,直接php調用然後返回資料
服務端只返回一個狀態代碼(比如:成功,失敗等等),用戶端判斷跳轉。