Это считается плохой практикой, но в $.ajax()
есть параметр async
, который можно установить на false
и ожидать результата синхронно:
var result;
$.ajax({
type: 'POST',
url: '/test',
data: json_data,
async: false,
success: function(data) {
result=data;
},
dataType: 'application/json'
});
//result available here
Более идиоматичным, хотя и немного менее удобным в этом случае, было бы использование обратных вызовов:
function validate(okCallback, errorCallback) {
$.post('/test',json_data, function(data) {
if(data) {
okCallback();
} else {
errorCallback();
}
});
}
validate(
function() {
//proceed
},
function() {
//display validation error
}
}