Ваша проблема в том, что вы предполагаете, что $ .ajax является синхронной функцией, а это не так.Он не ожидает завершения вызова ajax, прежде чем перейти к следующему оператору.Это означает, что в зависимости от времени выполнения вашего вызова ajax, переменная вашего флага может быть установлена или нет.Фактически для него почти наверняка не будет установлено значение, отличное от 2, потому что прием туда и обратно для вызова ajax будет длиннее, чем время, необходимое исполнителю JS для перехода к вашему оператору if.
Когда вы устанавливаете точку останова на if (flag == 1), выполнение останавливается на этом, и вызов ajax успевает завершиться, поэтому он работает, когда вы устанавливаете точку останова, но не работает, когда вы не используетенет точки останова.Я предлагаю изменить ваш код так:
$("#loginButton").click(function(e) {
var un = $('#username').val();
$.ajax(
{
type: "POST",
url: "Utilities/CheckUsername.php",
data: "un="+ un,
success: function(data)
{
if(data=="Username Does Not Exist")
{
// code for handling an error;
}
else
{
$('#mike').html(data);
$('#loginForm').submit();
}
}
});
});
При нажатии кнопки входа в систему ваш ajax-вызов выполнит проверку имени пользователя и, наконец, отправит саму форму, когдапроверка в порядке.