2013-10-17 50 views
0

我正在對我們使用的框架進行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); 
    } 
+1

爲什麼使用assignement sign'=''$ resInfo = saveResident()'而不是等號:'==' –

+1

不應該是'$ resInfo-> saveResident()'? – Barmar

+0

對不起。還有一些代碼被遺漏了,因爲它包含太多內容。 @Christian Bitoi,因爲我真的在那裏調用函數,並且希望將$ resInfo設置爲它的返回值。 saveResident()是一個業務邏輯級別的方法,它調用ResInfo對象的setter,傳入消毒的$ _POST值,然後調用PDO層,將對象屬性寫入相應的數據庫字段。 – erfling

回答

1

如果你說:

  • 它的工作原理saveResident()
  • saveResident()運行成功的內LY。
  • 而不是在那之後,如果陳述。

我想,saveResident返回false,一個空數組或根本沒有。畢竟不使用$resInfo

+0

所以你把我放在正確的軌道上。 saveResident()返回已保存對象的副本,而不是布爾值。 我只需要分開保存呼叫和我堅持它的部分: $ resInfo = new ResInfo(); if(saveResident()){ \t $ resInfo = saveResident(); \t http_response_code(201); } – erfling