Шаблон "команда" используется в Java, потому что у нас нет закрытий в Java. Функторы являются попыткой реализовать закрытия.
языку А с закрытиями не нужен Шаблон "команда".
Нет ничего плохого в наличии вызова ajax внутри обратного вызова ajax. Фактически, вы даже этого не делаете, а вот что вы делаете здесь:
Некоторые вещи, которые необходимо проверить:
Сервер успешно возвращается? (нет 404, 500 ошибок и т. д.)
Вы ожидаете ответа json. Содержит ли он данные вроде {response: 'captcha}, которые вы проверяете?
Когда запускается событие cbox_closed? Вы уверены, что это происходит?
Вы передали обратный вызов «успех» в jQuery, но не передали обратный вызов «ошибка». Таким образом, вы игнорируете ошибку. Вот пример, чтобы зафиксировать ошибку и при необходимости отобразить ее в консоли Firebug.
var lastRequest = jQuery.ajax( { type: "POST"
, url: this._ajaxUrl
, data: postdata
, dataType: "json"
, success: _gotAjaxResponse
, error: _gotAjaxError
} );
function _gotAjaxResponse( data )
{
window.console && console.log( data );
}
function _gotAjaxError(xhr, status, error)
{
// Show server script errors in the console.
if( xhr.status == 500 )
{
var response = xhr.responseText;
response = response.replace( /\r?\n/g, "" )
.replace( /(<\/)/g, "\n$1" )
.replace( /<[^>]+>/g, "" )
.replace( /^\s+/, "" )
.replace( /\s+$/, "" );
window.console && console.error(response);
}
alert("I'm sorry...\n\n"
+ "Unfortunately an error occured while communicating with the server.\n"
+ "Please try again later.");
}