Положение
Моя функция обратного вызова php отправляет - если в БД не было найдено результатов - возвращает следующее:
header( "Content-Type: application/json" );
echo json_encode( array(
'success' => false
,'error' => 'No results'
) );
exit;
Задача
При отправке обратно строки, закодированной в JSON, я могу перехватывать без проба во время функции .success()
и просто возвращаться и открывать диалоговое окно.
Что не работает, так это перехват функции .complete()
, которая срабатывает после срабатывания success/error
. Внутри функции complete
у меня есть status = success
, и я вижу только мои error
внутри jqxhr.responseText
, отформатированные в виде строки: "{"success":false,"error":"No results"}"
.
Я не могу использовать error
, так как это не 404/whatever
. Это просто Нет результатов .
Вопрос: Как я могу перехватить и отменить / отменить `complete`?
Когда я сейчас пойду и добавлю substring
проверку на всевозможные сообщения об ошибках, я разозлюсь.
Примечания: я использую jQuery в сочетании с jQuery Mobile.
Данные получают процесс $.ajax()
, как показано ниже (упрощенный пример):
$.ajax( {
type: 'POST'
,url: my_object.ajaxurl
,data: my_data
,success: function( response, status, request )
{
if ( false == response.success )
{
$( '#note h3' ).html( response.error );
return $.mobile.changePage( '#note', 'pop', true, true );
}
// Markers
doStuffWith( response.data );
$.mobile.changePage( $( '#another_view' ) );
}
,error: function( jqxhr , settings , exception )
{
}
,complete: function( jqxhr, status )
{
console.log( jqxhr );
console.log( status );
// @TODO ABORT IF ERROR
$( '#list_canvas' ).listview( 'refresh' );
}
} );