Как упростить процесс Ajax-разработки с помощью библиотеки jQuery

Статья о том, как применять в jQuery основные методы Asynchronous JavaScript + XML (Ajax), такие как создание запроса, как обрабатывать успешные операции и реагировать на ошибки и как анализировать результирующие наборы данных JavaScript Object Notation (JSON), XML, HTML и динамические данные PHP.

Крис Хэдлок, Web-разработчик/дизайнер, Studio Sedition

Фото Криса ХэдлокаКрис Хэдлок (Kris Hadlock) занимается разработкой и Web-дизайном по контрактам с 1996 года. Работал над проектами для таких компаний, как SPIN Magazine, IKEA, United Airlines, JP Morgan Chase, GoDaddy Software и Fire Mountain Gems. Автор книг Ajax for Web Application Developers (издательство Sams) и The ActionScript Migration Guide (издательство New Riders), а также журналист и писатель, публиковавшийся на многочисленных Web-сайтах и в журналах по дизайну, в том числе Peachpit.com, InformIT.com и Practical Web Design. Крис – основатель студии Web-дизайна и разработки программного обеспечения www.studiosedition.com, специализирующейся в области синтеза формы и функциональности.



26.08.2011

Не удивительно, что Ajax ― отличный способ улучшения работы Web-приложений. Но иногда для написания такого кода требуется больше времени, чем при традиционных методах разработки, особенно когда имеешь дело с динамическими наборами данных на стороне сервера. К счастью, теперь есть jQuery ― быстрый и надежный способ программирования на JavaScript и Ajax. Набор функций Ajax, доступных через jQuery, значительно упрощает Ajax-разработку, позволяя писать меньше кода и применять дополнительные методы и обработчики событий, охватывающие большинство ситуаций.

С jQuery требуется минимальное количество кода даже при разработке сложных функций, так что процесс идет намного быстрее. Благодаря этим инструментам Ajax становится более практичным способом разработки Web-сайта или приложения в сжатые сроки.

jQuery - это, по существу, библиотеки JavaScript, которая упрощает разработку JavaScript. Она минимизирует код, который нужно написать, благодаря множеству встроенных возможностей, обычно требующих создания специальных функций или объектов. Ссылки на дополнительную информацию и библиотеку jQuery приведены в разделе Ресурсы. Кроме того, как вы увидите на примере кода для этой статьи, текущую версию библиотеки jQuery можно встроить непосредственно в код. Эта статья предполагает знакомство читателя с программированием на JavaScript.

Традиционный JavaScript против Ajax jQuery

В прошлом для формирования запросов и обработки ответов Ajax приходилось писать много кода JavaScript. Чтобы составить запрос и обработать ответ, необходимо:

  • решить, какой браузер применять - на базе XMLHTTPRequest или на базе ActiveXObject;
  • задать событие обратного вызова, которое будет использоваться для получения ответа;
  • открыть запрос;
  • отправить запрос;
  • после запуска обратного вызова проверить readyState и определить, готов ли объект ответа, чтобы обратиться к нему.

В листинге 1 показан код JavaScript, типичный при приеме традиционного Ajax-запроса на языке JavaScript.

Листинг 1. Традиционный Ajax-запрос
<script type="text/javascript">
if(window.XMLHttpRequest) {
     request = new XMLHttpRequest();
}
else if(window.ActiveXObject) {
     request = new ActiveXObject("MSXML2.XMLHTTP");
}

request.onreadystatechange = onResponse;
request.open("GET", “url for request”, true);
request.send(null);

function checkReadyState(obj) {
     if(obj.readyState == 0) { // Отправка запроса }
     if(obj.readyState == 1) { // Загрузка ответа }
     if(obj.readyState == 2) { // Ответ загружен }
     if(obj.readyState == 3) { // Ответ готов }
     if(obj.readyState == 4) {
          if(obj.status == 200) {
               return true;
          }
          else if(obj.status == 404) {
               // Файл не найден
          }
          else {
               // Проблема при извлечении XML
          }
     }
}

function onResponse() {
     if(checkReadyState(request)) {
          // Обработчик ответа с одним из следующих свойств
          //alert(request.responseXML);
          //alert(request.responseText);
     }
}
</script>

jQuery выполняет те же функции, что и традиционный код JavaScript, но вам больше не приходится беспокоиться о написании большинства из них. Дело не в том, что традиционный код трудно написать, просто его много и – будем откровенны, – он может получиться несколько хаотичным, что особенно заметно, когда видишь, как легко это делается с помощью jQuery. В листинге 2 приведен простой запрос Ajax jQuery, похожий на запрос из листинга 1.

Листинг 2. Простой запрос Ajax jQuery
<script type="text/javascript">
$.ajax({
     url: 'data/content.xml',
     success: function(xml) {
          // Разбор ответа
     }
});
</script>

Разница очевидна. А код можно упростить еще больше, так как с jQuery не нужно переписывать весь код для каждого запроса. Отличным решением служит метод, называемый ajaxSetup, который обеспечивает возможность установки значений по умолчанию для запросов Ajax. Это особенно полезно, когда передается много запросов по одному и тому же URL; можно установить тип запроса по умолчанию, такой как POST или GET и т.п. Со встроенной библиотекой jQuery можно легко установить некоторые значения по умолчанию, как в примере кода из листинга 3.

Листинг 3. Использование метода ajaxSetup для установки значений по умолчанию параметров запросов Ajax
<script type="text/javascript">
$.ajaxSetup({
     url: 'url for request',
});
</script>

В этом примере для запроса устанавливается значение параметра url по умолчанию, чтобы этот параметр не нужно было включать в вызов Ajax. Но если его включить, он просто переопределит настройку по умолчанию. Можно установить значения по умолчанию для целого ряда параметров:

  • async
  • beforeSend
  • cache
  • contentType
  • data
  • dataFilter
  • dataType
  • global

Ссылка на полный список и дополнительную информацию приведена в разделе Ресурсы.

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

  • События, вызываемые перед отправкой запроса:
    • ajaxStart (global)
    • beforeSend (local; позволяет изменить объект XMLHTTPRequest, установив дополнительные заголовки и т.д.)
    • ajaxSend (global)
  • События, вызываемые при успешном запросе:
    • success (local)
    • ajaxSuccess (global)
  • События, вызываемые при безуспешном запросе:
    • error (local)
    • ajaxError (global)
  • События, вызываемые по выполнении запроса, независимо от успеха:
    • complete (local)
    • ajaxComplete (global)
  • Событие вызываемое, когда запросов на обработку больше нет:
    • ajaxStop (global)

Запрос XML-файла и обработка ответа

Теперь, когда мы рассмотрели основные различия между традиционными запросами JavaScript и запросами Ajax jQuery, можно пойти дальше и запросить реальный файл XML. Запрашиваемый XML-файл – он показан в листинге 4 – включает в себя элементы header, description и sourceUrl, которые соответствуют этой статье и используются для визуализации простой HTML-страницы с заголовком, описанием и гиперссылкой на загружаемый исходный код.

Листинг 4. Пример XML-файла для Ajax-запроса с применением jQuery
<?xml version="1.0" encoding="UTF-8"?>
<content>
     <header>Improving Ajax Development with jQuery</header>
     <description>It's no surprise that Ajax is a great way to enhance a web 
     application. However, sometimes the code that needs to be written can take more 
     time than traditional development techniques, especially when you're interacting 
     with dynamic server-side data sets. Luckily, with the introduction of jQuery there's 
     now a quicker and more robust way to write JavaScript and Ajax. The suite of Ajax 
     functionality available through jQuery makes Ajax development much easier than the 
     past by allowing you to write less code and by lending additional methods and event 
     handlers to cover any situation. The amount of code that needs to be written with 
     jQuery is very minimal, even when developing complex functionality, so development 
     is a lot faster. With these tools Ajax is becoming a more viable option when 
     developing a website or application, even on a tight deadline.</description>
     <sourceUrl>
     http://articles.studiosedition.com/ibm/improving_ajax/ImprovingAjaxDevWithJQuery.zip
     </sourceUrl>
</content>

Первое, что нужно сделать, чтобы запросить и разобрать этот XML-файл, – это внедрение библиотеки jQuery. В идеале нужно включить в свой специальный код отдельный файл JavaScript, но для целей данной статьи код JavaScript содержится в примере HTML. Чтобы все элементы страницы полностью загрузились и были доступны для языка JavaScript, сделаем запрос Ajax тогда, когда страница будет полностью загружена. В jQuery есть простое событие ready, которое можно использовать для этой функции: применим его к объекту document. При запуске события ready вызывается соответствующая функция, и можно приступать к запросу Ajax. Этот процесс используется во всех примерах из этой статьи, чтобы гарантировать доступность всего, что находится в пределах страницы.

Когда страница готова, можно сформировать Ajax-запрос с помощью jQuery. Как видно из листинга 5, запрос похож на тот, что мы уже видели, но теперь обрабатываются успешные и ошибочные ответы.

Листинг 5. Запрос и разбор XML-файла с помощью Ajax и jQuery
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     <title>Improving Ajax Development with jQuery</title>
     <script type="text/javascript" 
     src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js">
     </script>
     <script type="text/javascript">
     $(document).ready(function(){
     $.ajax({
          url: 'data/content.xml',
          success: function(xml) {
          var header = description = sourceUrl = '';
          var content = xml.getElementsByTagName('content');
          for(var i=0; i<content.length; i++) {
               for(var j=0; j<content[i].childNodes.length; j++) {
                    switch(content[i].childNodes[j].nodeName) {
                    case 'header':
                         header = content[i].childNodes[j].firstChild.data;
                         break;
                    case 'description':
                         description = content[i].childNodes[j].firstChild.data;
                         break;
                    case 'sourceUrl':
                         sourceUrl = content[i].childNodes[j].firstChild.data;
                         break;
                    default:
                         //
                    }
               }
          }
     $("body").append('<h1>'+header+'</h1>');
     $("body").append('<p>'+description+'</p>');
     $("body").append('<a href="'+sourceUrl+'">Download the source</a>');
     },
     error: function(xhr, status, err) {

         // Обработка ошибок
     }
     });
     });
     </script>
</head>

<body>
</body>
</html>

Событие success получает три аргумента: data, textStatus и XMLHttpRequest. Единственный параметр, который используются в этой статье ― data. В примере он назван xml, чтобы было легко определить, что в качестве ответа возвращаются XML-данные. По файлу XML мы знаем, что можно ожидать header, description и sourceUrl, поэтому пройдемся по параметрам в файле и присвоим эти значения соответствующим переменным. Когда все переменные получили значения, можно обработать данные как HTML, добавив каждый элемент к телу HTML-страницы и применив базовое форматирование. Если запрос оказался неудачным, будет запущено событие error, которое представлено тремя аргументами: XMLHttpRequest, textStatus и errorThrown. Параметр XMLHttpRequest должен быть фактическим объектом; textStatus – это строка, которая описывает тип ошибки, а параметр errorThrown – это необязательный объект исключения.


Запрос данных JSON и обработка ответа

В случае с JSON процесс аналогичен запросу XML. Основное отличие заключаются в настройке параметра dataType на определенное значение, анализе данных и добавлении сокращенного метода, который может использоваться в качестве альтернативы типичному запросу Ajax jQuery. Ниже рассматриваются все эти различия.

В листинге 6 приведен пример файла JSON, содержащего те же данные, что и XML-файл из листинга 4. Цель состоит в том, чтобы с использованием этих данных получить тот же HTML-файл. Важно строго придерживаться JSON, так как любое отклонение будет отвергнуто с сообщением об ошибке обработки.

Листинг 6. Код JSON для примера запроса
{"content":
     {
     "header": "Improving Ajax Development with jQuery",
     "description": "It's no surprise that Ajax is a great way to enhance a web 
     application. However, sometimes the code that needs to be written can take more 
     time than traditional development techniques, especially when you're interacting 
     with dynamic server-side data sets. Luckily, with the introduction of jQuery there's 
     now a quicker and more robust way to write JavaScript and Ajax. The suite of Ajax 
     functions available through jQuery makes Ajax development much easier than the 
     past by allowing you to write less code and by lending additional methods and event 
     handlers to cover any situation. The amount of code that needs to be written with 
     jQuery is very minimal, even when developing complex functions, so development 
     is a lot faster. With these tools Ajax is becoming a more viable option when 
     developing a website or application, even on a tight deadline.",
     "sourceUrl": 
"http://articles.studiosedition.com/ibm/improving_ajax/ImprovingAjaxDevWithJQuery.zip"
     }
}

Для формирования запроса и анализа ответа JSON нужно настроить HTML как в примере XML, сначала вложив в него библиотеку jQuery, а затем включив свой специальный код в событие ready. В Ajax-запросе, приведенном в листинге 7, есть новый параметр dataType. Его можно использовать для информирования jQuery о том, что ожидается ответ JSON, чтобы возвращался объект JavaScript, который будет легко разобрать. За кулисами JQuery использует функцию parseJSON, которая принимает правильно сформированную строку JSON и возвращает результат в объект JavaScript. Это означает, что JQuery запрашивает данные JSON, преобразует их в объект JavaScript и возвращает в ответ объект JavaScript, так что вам не нужно ничего делать, кроме обращения к объекту. Этот процесс избавляет от написания собственных функций и дополнительного кода.

Листинг 7. Запрос и разбор JSON с помощью Ajax и jQuery
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Improving Ajax Development with jQuery</title>
<script type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
     $.ajax({
          url: 'data/content.js',
          dataType: 'json',
          success: function(js) {
          $("body").append('<h1>'+ js.content.header+'</h1>');
          $("body").append('<p>'+ js.content.description+'</p>');
          $("body").append('<a href="'+ js.content.sourceUrl+'">Download the source</a>');
     },
     error: function(xhr, status, err) {
          // Обработка ошибок
     }
     });
});
</script>
</head>

<body>
</body>
</html>

Разбор JSON после преобразования в объект JavaScript ничем не отличается от доступа к свойствам и функциям любого объекта JavaScript с точечной записью. В листинге 8 видно, что параметр data события success назван js. Такое имя позволяет легко определить, что это наш объект JavaScript. Объект js принимает структуру файла JSON, так что можно обратиться к объекту content, а затем к header, description и sourceUrl внутри объекта content. HTML обрабатывается аналогично примеру XML путем применения простой разметки и добавления его к элементу <body> HTML-страницы.

Для запроса JSON можно использовать и другой сокращенный метод, называемый getJSON, который загружает данные JSON с сервера с помощью метода GET. Эквивалент предыдущего запроса JSON с применением метода getJSON представлен в листинге 8.

Листинг 8. Запрос и разбор данных JSON с помощью метода getJSON
<script type="text/javascript">
$(document).ready(function(){
	$.getJSON('data/content.js', function(js) {
	$("body").append('<h1>'+ js.content.header+'</h1>');
    $("body").append('<p>'+ js.content.description+'</p>');
$("body").append('<a href="'+ js.content.sourceUrl+'">Download the source</a>');
	});
});
</script>

Запрос HTML-файла и обработка ответа

Последний набор статических данных, который мы запрашиваем – это HTML. Код HTML, приведенный в листинге 9, ― это то, что мы получали в предыдущих примерах.

Листинг 9. Пример HTML-файла для Ajax-запроса с применением jQuery
<h1>Improving Ajax Development with jQuery</h1>
<p>It's no surprise that Ajax is a great way to enhance a web application. 
However, sometimes the code that needs to be written can take more time than traditional 
development techniques, especially when you're interacting with dynamic server-side data 
sets. Luckily, with the introduction of jQuery there's now a quicker and more robust way 
to write JavaScript and Ajax. The suite of Ajax functions available through jQuery 
makes Ajax development much easier than the past by allowing you to write less code and 
by lending additional methods and event handlers to cover any situation. The amount of 
code that needs to be written with jQuery is very minimal, even when developing complex 
functions, so development is a lot faster. With these tools Ajax is becoming a more 
viable option when developing a website or application, even on a tight deadline.</p>
<a href="http://articles.studiosedition.com/ibm/
    improving_ajax/ImprovingAjaxDevWithJQuery.zip">
Download the source
</a>

HTML – это, пожалуй, самый простой для обработки тип ответа, потому что разбирать нечего. Как и в предыдущих примерах, чтобы создать запрос HTML, начнем с внедрения библиотеки jQuery, а затем добавим специальный код JavaScript в событие ready. В коде, который показан в листинге 10, как и в примере JSON, используется параметр dataType, которому присваивается значение html, что указывает на то, что jQuery возвратит HTML как неформатированный текст, а не XML или объект JavaScript, как в предыдущих примерах. Функция аналогична традиционным запросам JavaScript Ajax с использованием свойства responseText, которое возвращает неформатированный текст. Другое полезное свойство заключается в том, что если в результирующем наборе HTML присутствуют теги script, они оцениваются при добавлении к HTML-странице, так что можно добавить код JavaScript, который будет выполняться после добавления данных HTML к странице.

Как и раньше, применяются события success и error, и параметру data присваивается имя в соответствии с реальным типом данных – на этот раз, html – чтобы его было легко идентифицировать. Поскольку данные HTML анализировать не нужно, их можно просто добавить в тело страницы HTML, и все готово.

Листинг 10. Запрос и разбор HTML с помощью Ajax и jQuery
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Improving Ajax Development with jQuery</title>
<script type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
     $.ajax({
          url: 'data/content.html',
          dataType: 'html',
          success: function(html, status, xhr) {
               $("body").append(html);
          },
          error: function(xhr, status, err) {
               // Обработка ошибок
          }
     });
});
</script>
</head>

<body>
</body>
</html>

Передача данных на сервер

Разобравшись с несколькими статическими типами данных, можно поговорить о работе с динамическими данными. В качестве серверного будем использовать язык PHP, который генерирует ответ, но для создания такого процесса годится любой серверный язык. Как правило, этот процесс используется для получения данных из базы данных на основе определенных параметров, таких как идентификатор пользователя. В данном случае мы просто возвращаем набор XML-данных, подобный тому, что используется в разделе Запрос XML-файла и обработка ответа, но для возврата данных PHP требуется определенный параметр.

Код PHP, приведенный в листинге 11, – это то, что мы запрашиваем с помощью Ajax. Он начинается с установки типа данных, которые будут возвращены в XML в кодировке UTF-8. Затем, прежде чем возвратить XML-данные, PHP затребует через POST параметр с именем secret и значением ajax. Если эти требования не будут выполнены, PHP не возвратит никаких данных. Поэтому при создании запроса на получение набора данных XML необходимо передать через POST параметр secret со значением ajax.

Листинг 11. Пример кода PHP, который запрашивает Ajax
<?php

header("Content-Type: application/xml; charset=UTF-8");

if(isset($_POST['secret']) && $_POST['secret'] == 'ajax')
{
     echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
     <content>
     <header>Improving Ajax Development with jQuery</header>
     <description>It's no surprise that Ajax is a great way to enhance a web 
     application. However, sometimes the code that needs to be written can take more 
     time than traditional development techniques, especially when you're interacting 
     with dynamic server-side data sets. Luckily, with the introduction of jQuery there's 
     now a quicker and more robust way to write JavaScript and Ajax. The suite of Ajax 
     functions available through jQuery makes Ajax development much easier than the 
     past by allowing you to write less code and by lending additional methods and event 
     handlers to cover any situation. The amount of code that needs to be written with 
     jQuery is very minimal, even when developing complex functions, so development 
     is a lot faster. With these tools Ajax is becoming a more viable option when 
     developing a website or application, even on a tight deadline.</description>
     <sourceUrl>
     http://articles.studiosedition.com/ibm/improving_ajax/ImprovingAjaxDevWithJQuery.zip
     </sourceUrl>
     </content>";
}

?>

Код в листинге 12 похож на оригинальный пример XML, за исключением параметров url, type и data. Как всегда, начинаем с вложения библиотеки jQuery, затем включим специальный код JavaScript в событие ready. Теперь о различиях: Обратите внимание, что значение параметра url изменилось. На этот раз мы запрашиваем файл PHP, который будет содержать указанный код. Далее следует параметр type, который настроен на POST, так что файл PHP получит переданную ему информацию с использованием правильного метода HTTP. Затем устанавливаем значение secret=ajax параметра data, который находится в формате строки запроса и доступен через функцию РНР $_POST.

Листинг 12. Запрос и разбор динамических данных с помощью Ajax и jQuery
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Improving Ajax Development with jQuery</title>
<script type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
     $.ajax({
          url: 'data/content.php',
          type: 'POST',
          data: 'secret=ajax',
          success: function(xml) {
               var header = description = sourceUrl = '';
               var content = xml.getElementsByTagName('content');
               for(var i=0; i<content.length; i++) {
               for(var j=0; j<content[i].childNodes.length; j++) {
               switch(content[i].childNodes[j].nodeName) {
               case 'header':
                    header = content[i].childNodes[j].firstChild.data;
                    break;
               case 'description':
                    description = content[i].childNodes[j].firstChild.data;
                    break;
               case 'sourceUrl':
                    sourceUrl = content[i].childNodes[j].firstChild.data;
                    break;
               default:
                    //
               }
          }
          }
          $("body").append('<h1>'+header+'</h1>');
          $("body").append('<p>'+description+'</p>');
$("body").append('<a href="'+sourceUrl+'">Download the source</a>');
          },
          error: function(xhr, status, err) {
               // Обработка ошибок
          }
     });
});
</script>
</head>

<body>
</body>
</html>

Как видите, параметр jQuery data обеспечивает широкие возможности. Этот пример показывает, как легко наладить связь между jQuery и языком программирования на стороне сервера в дополнение к обмену переменными и их значениями. Эти возможности поистине безграничны, а jQuery упрощает доступ к ним.


Заключение

Теперь, когда вы познакомились со всеми основными методами Ajax с использованием jQuery, легко убедиться, что библиотека Ajax jQuery повышает качество разработки, значительно упрощая ее, требуя меньше кода и обеспечивая дополнительные возможности контроля. Эти усовершенствования составляют основу для быстрого создания сложных Ajax-приложений без написания длинного кода или продления сроков разработки. Примеры из этой статьи демонстрируют, как с использованием jQuery можно легко и быстро создавать сложные Ajax-взаимодействия в самые короткие сроки – даже работая с несколькими языками программирования.


Загрузка

ОписаниеИмяРазмер
Примеры сценариев Ajax, используемые в этой статьеImprovingAjaxDevWithJQuery.zip12 КБ

Ресурсы

Научиться

Получить продукты и технологии

  • Непосредственное введение текущей версии библиотеки jQuery из Google. (EN)

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Web-архитектура
ArticleID=754242
ArticleTitle=Как упростить процесс Ajax-разработки с помощью библиотеки jQuery
publish-date=08262011