async: false, но лучше так не делать.
Вообще разберитесь может почему так выходит? МОжет потом вы поймете что это никакого отношения к синтаксису не имеет... Что функции в succsess отрабатывают когда цикл уже обошли давно... И лучше делать тогда уж так:
var ids = []
for(var id = 1; id < 10; id++) {
ids.push(id);
}
ids.forEach(function (id) {
// по скольку ссылка на нужный id будет сохранена всегда, пока живо замыкание
// все будет ок.
$.ajax({
type: "POST",
data: {Id: id},
url: "getname.php",
dataType: "json",
success: function(data){
alert(id);
}
})
}
Что бы лучше понять эту "странность" почитайте про то, как работает js. В частности про event loop