Насколько сложным должен быть мой Ajax-код? - PullRequest
2 голосов
/ 04 сентября 2008

Я видел простые примеры исходных кодов 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;
}

Ответы [ 3 ]

3 голосов
/ 04 сентября 2008

В опубликованном коде отсутствует один важный компонент: функция stateChanged.

Если вы не совсем понимаете код, который вы разместили самостоятельно, то происходит, когда завершается вызов getchats.php, вызывается функция «stateChanged», и эта функция будет отвечать за обработку ответа. Поскольку скрипт, который вы вызываете, и сама функция с префиксом «gets», я уверен, что ответ - это то, что вас заинтересует.

Кроме того, существует множество способов улучшить код, который вы разместили. Я предполагаю, что это работает, объявляя один объект "xmlHttp", а затем делая его доступным для каждой функции (потому что если это не так, функция stateChanged не может получить ответ). Это нормально, пока вы не выполните AJAX-запрос до того, как последний (или несколько последних) еще не ответил, что в этом случае ссылка на объект перезаписывается на последний запрос каждый раз.

Кроме того, любой AJAX-код, достойный его соли, предоставляет функциональные возможности для случаев сбоев и сбоев (ошибки сервера, страница не найдена и т. Д.), Так что соответствующее сообщение может быть доставлено пользователю.

Если вы просто хотите использовать функциональность AJAX на своем веб-сайте, я бы указал вам направление jQuery или аналогичный framework .

НО, если вы действительно хотите понять технологию и то, что происходит за кулисами, я буду продолжать делать то, что вы делаете, и задавать конкретные вопросы, пытаясь создать небольшой легкий класс AJAX самостоятельно. Вот как я это сделал, и хотя сегодня я использую фреймворк jQuery ... Я все еще рад, что знаю, как он работает за кулисами.

0 голосов
/ 04 сентября 2008

Я бы искренне рекомендовал использовать одну из многих библиотек, доступных для Ajax. Я использую прототип сам, в то время как другие предпочитают jQuery . Мне нравится прототип, потому что он довольно минимален. учебник по прототипу 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...') }
  });
0 голосов
/ 04 сентября 2008

Я бы использовал фреймворк, такой как DOMAssistant , который уже сделал тяжелую работу за вас и будет более надежным, а также добавит дополнительные полезные функции.

Кроме того, ваш код выглядит так, как будто он справится с работой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...