Насколько сложным должен быть мой Ajax-код?

StackOverflow https://stackoverflow.com/questions/43507

  •  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...') }
  });
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top