Ошибки из MySQL не генерируются как исключения и, следовательно, вы не можете их перехватить.
Вместо этого, если вы запрашиваете нулевые результаты, вы можете распечатать сообщения с помощью db -> _ error_message () и db -> _ error_number () (http://codeigniter.com/forums/viewthread/79950/#413830). Таким образом, вы можете переписать свой код следующим образом:
$query = $this->db->insert('subscriber',$data);
if($query){
return true;
} else {
$msg = $this->db->_error_message();
$num = $this->db->_error_number();
// Do something with msg and num
return false;
}
Также обратите внимание , что error
внутри $.ajax
толькоВызван, если при выполнении запроса произошла ошибка. Даже если ваш запрос к базе данных завершился неудачно, запрос Ajax все равно не будет выполнен, следовательно, вы никогда не будете иметь ошибку Ajax.
Я вижу два вариантаздесь:
1) Сделать запрос HTTP каким-то образом неудачным (например, вернуть ошибку HTTP 404.)
2) Обработать ошибки MySQL внутри метода success
вместо error
:
success: function(msg){
if ( msg == 'yoursuccessmessage' ) {
// Handle success
} else {
// Handle error
}
},