2013-11-05 22 views
0

我想使用php的use_trans_sid,所以我會在所有的網址phpsessid。 但是,當我將use_trans_sid設置爲1時,AJAX調用沒有正確得到結果。 不知何故結果被截斷。未能返回AJAX通話時use_session_sid

當我將use_trans_sid重新設置爲0時,AJAX再次調用get結果。

會出現什麼問題?

我正在使用Yii框架。

+0

什麼意思'不知何故結果被截斷。你能舉例說明完整的結果並截斷嗎? – CreatoR

+0

好吧,我必須澄清一點:正確的詞必須是「AJAX調用失敗」。當我使用Chrome開發人員界面(F12)檢查此操作時,然後點擊「網絡」標籤,選擇請求(從左側列表中),點擊「預覽」。在「預覽」選項卡中,我可以看到截斷的結果。它顯示了預期視圖的一半。但是,在「響應」選項卡上,結果是完整的。 如果AJAX調用成功,「預覽」選項卡將顯示一個JSON對象。 – fasisi

+0

我注意到,每當我調用'Yii :: app() - > session-> sessionID'時,AJAX調用失敗。如果我不''調用Yii :: app() - > session-> sessionID',AJAX調用成功。 (在Chrome的Developer界面中,「預覽」標籤顯示JSON對象 – fasisi

回答

0

use_trans_sid=1檢查ajax url請求時,如果它們沒有phpsessid var,則需要手動將它添加到請求url作爲GET參數。

use_trans_sid=1只重寫頁面url,而不是js和ajax。當它使用時,PHP嘗試在get參數中查找會話標識,如果未找到 - 創建新會話。

當你使用use_trans_sid=0 Ajax的工作原理,因爲PHP工作過的Cookie的會話ID

+0

CreatoR,我在ajax請求的請求url中添加了phpsessid var,並且ajax調用仍然會被截斷結果 – fasisi

+0

在ajax目標中'use_trans_sid = 1'你能做'var_export(session_name()。':'。session_id());'帶有響應的響應嗎?檢查會話id是否等於添加到請求的var並檢查它的值如果不同的名稱 - 使用哪個作爲迴應,如果不同的值 - use_trans_sid錯誤,你可能從請求var phpsessid獲得會話ID,並通過'session_id($ _ GET ['phpsessid'])手動設置它;' – CreatoR

+0

use_trans_sid是php中的變量。 ini conf file。 – fasisi

0

我已經設置PHP的use_trans_sid爲1

就這樣,PHP將插入代碼傳播的會話ID。 在我的情況下,PHP插入了一個隱藏變量,該隱藏變量已被編碼爲json對象。 結果,ajax調用把它作爲請求錯誤(它沒有得到一個json對象)。

我通過用'Hello'等字符串替換表單來證實這一點。 因此,PHP沒有插入代碼來傳播會話ID。並且ajax調用它作爲一個好的json對象。

現在問題已經改變成'如何使得來自PHP的這種中斷不會干擾Ajax調用?'