Вам нужно изменить свое решение на что-то вроде
function checkSolrServerAvailibility(sort,order,itemPerPage,showPage,query,solrURL, success, error){
$.ajax({
url: "",
dataType: 'json',
success: function(json){
success.apply(this, arguments);
},
error:function(){
error.apply(this, arguments);
}
})
}
function onAvailabilityCheck(json, textStatus, jqXHR){
getSolrResponse(sort,order,itemPerPage,showPage,query,solrURL);
}
function onAvailabilityCheckError(jqXHR, textStatus, errorThrown){
var msg= "<hr /><font size="+size+" ><b>Solr Server Not Runing </b></font><hr /> ";
removeList();
$("#result").html(msg);
}
function validateSearchStirng(sort,order,itemPerPage,showPage){
checkSolrServerAvailibility(sort,order,itemPerPage,showPage,query,solrURL, onAvailabilityCheck, onAvailabilityCheckError);
}
Поскольку вы работаете с ajax-запросом, который по определению является асинхронным по своей природе, ваш код не будет работать, потому что, как только клиент отправил ajax-запрос на сервер, он не будет ждать ответа сервера на возвращение. Он продолжит выполнение следующих строк ... это означает, что ваш флаг всегда будет установлен в false.
Чтобы решить эту проблему, я предлагаю использовать методы обратного вызова для обработки как успешных, так и неудачных случаев, как показано.
В случае успешного запроса ajax с указанными параметрами будет вызван метод onAvailabilityCheck
, а если запрос ajax является неудачным, будет вызван метод onAvailabilityCheckError
.