私たちが使用するフレームワークへの ajax クエリを作成しています。PDO 実行メソッドが呼び出される場所に設定する以外は、サーバーの応答コードを設定できません。
パターンは次のように機能します。
ajax クエリが実行され、入力を検証するファイル action.php にポストされます。入力が有効な場合は、ビジネス ロジック (application.php) で関数を呼び出し、基になる PDO の挿入/保存メソッドを呼び出します。うまく保存できたら、action.php 関数で TRUE を返します。
私の ajax 呼び出しには、xhr.status をチェックして保存が行われたことを確認する .done() 関数があります。http_response_code(201); を呼び出して、保存が成功したときに xhr.status を 201 に設定したいと考えています。これは、execute() メソッドの直後の PDO レイヤーで実際に実行すると機能しますが、他の場所では機能しません。明らかに、これは応答コードを設定する適切な場所ではありません。
抽象的な質問ですみません。動作しないコードの例を次に示します。
$resInfo = new ResInfo();
if($resInfo = saveResident()){
http_response_code(201);
}
return true;
応答コードはここでは設定されません。代わりに、saveResident() が呼び出す PDO メソッドで設定されます。
他の誰かが同様の問題を抱えていますか?
編集:
saveResident() はブール値ではなく、保存されたオブジェクトのコピーを返すことに気付きました。そのため、保存されたオブジェクトの永続化からそれへの呼び出しを分離する必要がありました。
if(saveResident()){
$resInfo = saveResident();
http_response_code(201);
}