サイト管理者がユーザーの「もの」(名前や職歴など) を検証または未検証できるようにする Web アプリケーションに CodeIgniter-Bonfire を使用しています。管理者は、ドロップダウン リストから [確認] または [未確認] を選択するだけです。ドロップダウン リストの値が変更されると、サーバーに対して ajax 呼び出しが行われます。次に、サーバーは何らかの値を javascript にエコーアウトし、それがビュー ページに挿入されます。
すべてが機能しています。データベースはそれに応じて変更され、エコーされた値は正しいですが、JavaScript はサーバー側からのエラー メッセージもキャッチするようになりました。
エラーは次のとおりです。Trying to get property of non-object.
エラーが発生すると思われる場所の前後にエコーを実行しましたが、オブジェクトは問題なく出力されます。こういうことは今までなかったので困っています。
本当に厄介なのは、エラーがランダムに発生するように見えることです。検証が検証済みから未検証に、またはその逆になる場合があります。エコーされた値の直前にエラーが出力されることもあれば、自然に消えてしまうこともあります (ただし、一瞬表示される前ではありません。
前もって感謝します。
JavaScript は次のようになります。
$(document).on('change', '.verified', function(event) {
var id = $(this).attr('id');
$.ajax({
type: "POST",
url: 'http://theurl.com/module/controller/verify/100/files/24'
}).done(function(msg) {
$('#timestamp_'+id).text(msg);
});
関数の検証は次のようになります。
public function verify($user_id, $other_table, $other_id)
{
$this->load->model('profile/Verifiable_items_model', 'vi_model');
$item = $this->vi_model->find_by(array(
'user_id' => $user_id,
'other_table' => $other_table,
'other_id' => $other_id
));
$update_date = 0;
if ($item->verified == 0) // ERROR HERE
{
$update_date = date('Y-m-d H:i:s', time());
$data = array('verified' => 1, 'notes_time' => date('Y-m-d H:i:s', time()), 'verified_by' => $this->current_user->username);
}
else
{
$data = array('verified' => !($item->verified), 'notes_time' => NULL); // ERROR HERE
}
$this->vi_model->update($item->id, $data);
echo $update_date;
}