Если вы используете JQuery ниже, чем 1.8, да, можно, установив async = false
function test(url){
var AjaxCall = $.ajax({
type: GET,
url: url,
async : false
data: {},
success: function(data,status,xhr){
return xhr
},
error: function(xhr,e){
return xhr
}
});
}
Пожалуйста, обратите внимание, что это является устаревшим, и по уважительной причине
По JQuery 1.8, использование async: false с jqXHR ($ .Deferred) - устарел; вы должны использовать параметры успешного завершения/ошибки/завершения обратного вызова вместо соответствующих методов объекта jqXHR, таких как jqXHR.done() или устаревший jqXHR.success().
http://api.jquery.com/jquery.ajax/
function test(url){
var AjaxCall = $.ajax({
type: GET,
url: url,
data: {},
complete: function(xhr, status){
if(xhr.status === 200)console.log('success');
}
});
}
И нет, вы не можете вернуть значение из вашей функции с помощью этого метода. Это не так, как работает асинхронный процесс. Если вы хотите вернуться, вам нужно установить async = false, и этот вид поражения будет использоваться для использования ajax.
Я думаю, что вы это сделаете, если я правильно понял, в массиве, который вы проходите там; передайте анонимную функцию по ошибке и успеху (как вы это делаете) и обрабатываете все, что хотите, –
да, но в случае успеха, если я делаю 'return xhr', а затем при вызове функции для выполнения var x = test (url); console.log (x); 'иметь результаты; – Abude
Почему бы просто не переместить оператор if в обратный вызов успеха? –