Насколько сложным должен быть мой Ajax-код?
-
09-06-2019 - |
Вопрос
Я видел простые примеры исходных кодов Ajax во многих онлайн-руководствах.Что я хочу знать, так это то, подходит ли использование исходного кода в примерах или нет?
Нужно ли еще что-нибудь добавить к коду, который используется в реальном приложении?
Какие шаги необходимо предпринять, чтобы сделать приложение более надежным и безопасным?
Вот пример исходного кода, который я получил из Интернета:
function getChats() {
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null) {
return;
}
var url="getchat.php?latest="+latest;
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function GetXmlHttpObject() {
var xmlHttp=null;
try {
xmlHttp=new XMLHttpRequest();
} catch (e) {
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
Решение
В опубликованном вами коде отсутствует один важный ингредиент:состояние функции изменилось.
Если вы не совсем понимаете код, который опубликовали сами, то после завершения вызова getchats.php вызывается функция "StateChanged", и эта функция будет отвечать за обработку ответа.Поскольку скрипт, который вы вызываете, и сама функция имеют префикс "gets", я почти уверен, что ответ - это то, что вас заинтересует.
Помимо этого, есть несколько способов улучшить опубликованный вами код.Я бы предположил, что это работает, объявляя один объект "xmlHttp", а затем делая его доступным для каждой функции (потому что, если этого не произойдет, функция StateChanged не сможет получить ответ).Это нормально, пока вы не запустите AJAX-запрос до того, как последний (или несколько последних) еще не ответили, и в этом случае ссылка на объект каждый раз перезаписывается на последний запрос.
Кроме того, любой ценный AJAX-код предоставляет функциональность для успешных и неудачных случаев (ошибки сервера, страница не найдена и т.д.), Так что соответствующее сообщение может быть доставлено пользователю.
Если вы просто хотите использовать функциональность AJAX на своем веб-сайте, то я бы указал вам в направлении jQuery или Похожие структура.
НО если вы действительно хотите понять технологию и то, что происходит за кулисами, я бы продолжил делать то, что делаете вы, и задавать конкретные вопросы, пока вы пытаетесь самостоятельно создать небольшой облегченный класс AJAX.Вот как я это сделал, и хотя сегодня я использую фреймворк jQuery..Я все еще рад, что знаю, как это работает за кулисами.
Другие советы
Я бы использовал такой фреймворк, как ДОМАссистент который уже выполнил за вас тяжелую работу и будет более надежным, а также добавит дополнительные полезные функции.
Кроме того, ваш код выглядит так, как будто он справится с поставленной задачей.
Я бы, честно говоря, рекомендовал использовать одну из множества библиотек, доступных для Ajax.Я использую прототип сам, в то время как другие предпочитают jQuery.Мне нравится prototype, потому что он довольно минималистичен.Тот Самый Учебное пособие по прототипу Ajax это хорошо объясняет.Это также позволяет вам легко обрабатывать ошибки.
new Ajax.Request('/some_url',
{
method:'get',
onSuccess: function(transport){
var response = transport.responseText || "no response text";
alert("Success! \n\n" + response);
},
onFailure: function(){ alert('Something went wrong...') }
});