Как обойти данную «загвоздку» синтаксиса?
var createSuccessHandler = function (i) {
    return function (data) {
        alert(i);
    };  
};
for(var id = 1; id != 10; id++)
{
    $.ajax({
        type: "POST",
        data: {Id: id},
        url: "getname.php",
        dataType: "json",
        success: createSuccessHandler(i)
    })
}
По мотивам habrahabr.ru/company/mailru/blog/233553/, 6 пункт
Проблема в том, что аякс-запрос - асинхронная функция и цикл for просто не ждет ее выполнения. В итоге запрос выполняется с последним значением переменной.
Вот так можно попробовать:for (var id = 1; id < 11; id++) { 
  (function (id) {
    $.post('getname.php', {Id: id}, function() {	
      alert(id);
    }, 'json');
  })(id)
}