我正在對我們使用的框架進行ajax查詢。我無法設置服務器響應代碼,除非將其設置爲調用PDO執行方法的位置。PDO設置服務器響應碼?
的模式是這樣的:
一個Ajax查詢運行,張貼到一個文件中,action.php的,可驗證的投入。如果輸入有效,我們在業務邏輯(application.php)中調用一個函數,然後調用底層的PDO插入/保存方法。如果我們得到了很好的保存,我們在action.php函數中返回TRUE。
在我的ajax調用中,我有一個.done()函數,通過檢查xhr.status來確認保存是否發生。當我們通過調用http_response_code(201);成功保存時,我想將xhr.status設置爲201。如果我真的在PDO圖層中執行此操作,正好在execute()方法後面,但是我無法使其在其他任何地方工作。顯然,這不是設置響應代碼的正確位置。
對不起,這個問題太抽象了。下面是一個不起作用的代碼示例:
$resInfo = new ResInfo();
if($resInfo = saveResident()){
http_response_code(201);
}
return true;
響應代碼未在此處設置。相反,它在saveResident()調用的PDO方法中設置。
其他人都有類似的問題?
編輯:
我意識到saveResident()返回保存對象,而不是一個布爾的副本,所以我需要呼叫從持久保存的對象中分離到它:
if(saveResident()){
$resInfo = saveResident();
http_response_code(201);
}
爲什麼使用assignement sign'=''$ resInfo = saveResident()'而不是等號:'==' –
不應該是'$ resInfo-> saveResident()'? – Barmar
對不起。還有一些代碼被遺漏了,因爲它包含太多內容。 @Christian Bitoi,因爲我真的在那裏調用函數,並且希望將$ resInfo設置爲它的返回值。 saveResident()是一個業務邏輯級別的方法,它調用ResInfo對象的setter,傳入消毒的$ _POST值,然後調用PDO層,將對象屬性寫入相應的數據庫字段。 – erfling