Любой код, основанный на ответе на запрос AJAX, должен называться внутри обратным вызовом запроса.
function check_name() {
$.ajax({
type: "POST",
url: "http://localhost/Framework/library/php_files/check_car_name.php",
data: "carName=" + document.getElementById("carName").value,
success: function (html) {
$("#checkname").html(html);
// I placed your code here instead.
// Of course you wouldn't need to set and then get the HTML,
// since you could just do a direct comparison.
var currentHtml = $("#checkname").html();
var compareString = "Car name unavailable";
if (currentHtml == compareString) {
$("#submit").hide();
} else {
$("#submit").show();
}
}
});
}
Причина в том, что по умолчанию AJAX-запрос асинхронный , что означает, что код, который приходит после запроса, будет выполняться немедленно вместо ожидания для ответа, чтобы вернуться.
Еще одна возможная проблема при сравнении HTML, о которой следует помнить, это пробелы. Если вы проводите сравнение строк, оно должно быть точно таким же, поэтому, если есть пробелы, вам сначала нужно его обрезать. Для этого можно использовать jQuery.trim()
(документы) .