2010-08-31 1 views
6

Я ищу способ вызвать ajax-ошибку в обратном вызове успеха. я попытался объяснить свой код проблемы ниже:Как я могу вызвать обратный вызов ошибки ajax при успешном обратном вызове?

$.ajax({ 
url: requestURL, 
data: postData, 
type: 'post', 
success: function(response){ 
    if(response.Success){ 
     // do something 
    }else{ 
     // request workflow fails in this case, 
     // i have to trigger this ajax request's error callback 
    } 
}, 
error: function(){ 
    // do something on error case 
}, 
dataType: 'json' 
}); 

ответ

10
var errorhandler = function(xhr, textStatus, error){ 
    // do something on error case 
}; 

$.ajax({ 
    url: requestURL, 
    data: postData, 
    type: 'post', 
    success: function(response){ 
     if(response.Success){ 
      // do something 
     }else{ 
      errorhandler(); 
     } 
    }, 
    error: errorhandler, 
    dataType: 'json' 
    }); 
+1

Ницца, просто, и в точку. :) – Joshua

+0

Убедитесь, что вы это сделали: 'errorhandler.apply (this, arguments);' для обеспечения видимости области и аргументов (они не будут одинаковыми, но они будут достаточно хороши). – balupton

+0

@balupton: В общем, я согласен. Но в этом конкретном случае область не имеет значения. Нет необходимости обращаться к 'this' внутри обработчика ошибок. – jAndy

0

Вы можете отправить соответствующий код статуса HTTP, так что обратный вызов ошибки срабатывает автоматически.

Диапазон погрешностей 4xx, который относится к ошибкам клиента, может быть хорошо подходит. Большинство API используют статусы HTTP для указания ошибки вместе с дополнительными данными JSON/XML, как вы это делаете. См. Пример Twitter's response codes.

+0

Я не могу прикоснуться к серверной среде, и я ищу клиентскую сторону, и я ищу способ вызова внутри случая успеха. –

Смежные вопросы