a
в ajax
означает асинхронный.следовательно, testit
не будет установлен на результат ответа ajax, пока не будет вызвана функция success:
(когда вызов ajax успешно завершен)
$.ajax({
type: 'POST',
url: 'test/get/1',
success: function (result) { testit = result; alert(testit); },
dataType: 'json',
data: 'js=1'
});
, если вы хотите, чтобы он работалсинхронно, вы также можете установить aysnc:false
в параметрах jQuery .ajax
, например:
var testit = $.ajax({
type: 'POST',
async: false,
url: 'test/get/1',
dataType: 'json',
data: 'js=1'
}).responseText;
alert(testit);
во втором методе, ALL javascript будет задерживаться до завершения вызова ajax (обычно заметно медленного).Я бы порекомендовал просто сделать ваш код в обратном вызове success:
из первого примера.тем не менее, вы можете также захотеть создать обратный вызов error:
на случай, если что-то не получится (в противном случае ваш обратный вызов НИКОГДА не может быть вызван, потому что не было никакого успеха).