В настоящее время я играю с некоторым кодом Ajax. Я придумал этот сценарий, чтобы попытаться отразить мою проблему, чтобы убедиться, что вы, эксперты, можете представить решение, спасибо.Ajax & JavaScript | Ограничение запросов, вызванных пользователем
Сценарий:
У меня есть кнопка HTML, как так: <p onclick="ajax_call();">Click</p>
. При нажатии на эту кнопку, он запустит запрос AJAX на страницу PHP, как это:
function ajax_launch(){
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = ajax_launch_callback;
xmlhttp.open("POST", "/php_script", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();
}
function ajax_launch_callback(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
// code to do something once response is here successfulyl
}
}
Это тогда делает некоторые PHP код в файле php_script
и возвращает $output
Проблема:
Страница php_script
, вызываемая через AJAX, очень тихая и делает несколько вызовов API и базы данных, что делает страницу «медленной» для загрузки (что совершенно нормально). Однако на данный момент, пока страница ждет ответа (он все еще делает php и еще ничего не возвращает), пользователь может технически спамить кнопку для запуска многих вызовов ajax. В идеале это просто вызовет стресс на сервере, и мне нужно, чтобы после того, как запрос был отложен и не вернулся, вы не можете делать дальнейшие запросы.
Как я могу достичь чего-то подобного?
Заранее спасибо, с нетерпением жду ваших решений/консультации
ТАКЖЕ:
По многочисленным просьбам, это то, что я имею в виду - см картину, когда я спамить нажмите на кнопку, чтобы запустить несколько запросов в то время как первый один не сделал (не возвращено еще ничего):
Image of chrome debugger (networks tab)
http://stackoverflow.com/questions/10276784/jquery-limit-the-number-of-simultaneous-ajax-requests. ПРОВЕРЬТЕ ПОСЛЕДНИЕ ДВУХ ОТВЕТЫ –
Наведите курсор на иконку загрузки во время запроса. Позволяет пользователям знать, что что-то происходит – charlietfl
Я считаю, что лучший способ сделать это - сделать чек в php, скажем, сеанс! – 0x58