Хостинг, который может больше
04.06.2011

Ajax jQuery для начинающих + видеоурок

jQuery Ajax для начинающих

Приветствую вас, уважаемый читатель моего блога.

Данная статья посвящена изучению основ работы с Ajax посредством jQuery.

Ajax — технология, позволяющая получать данные с сервера без перезагрузки страницы (ну вы это и так знаете). Реализуется данная технология нашими браузерами: в них вшиты классы, обладающие рядом свойств и методов, благодаря которым можно осуществлять асинхронные запросы к серверу (Ajax-запросы).

Видеоурок Ajax jQuery:

Скачать видеоурок (*.wmv, 52.5 МБ).

Скачать исходники (*.zip, 10.93 кБ).

Дамп базы данных :) (*.sql, 1.36 кБ)

В первой статье курса по ООП в PHP я пояснял термины класс, метод и свойство. Для совершенствования понимания работы с объектами рекомендую просмотреть весь видеокурс по PHP и Kohana.

Работать с Ajax можно двумя способами:

  • Чистый Ajax (создание экземпляра класса, реализующего функции Ajax в выбранном браузере и манипуляция его методами и свойствами). Данный способ интересен с точки зрения полного контроля и понимания происходящего процесса. Однако он обладает существенным минусом — необходимо учитывать множество специфических фич различных браузеров. Избавиться от данного минуса позволяет второй способ.
  • Взаимодействие с Ajax-возможностями браузера посредством библиотеки jQuery. В этом случае соблюдение всех браузерных особенностей мы оставляем на откуп разработчикам jQuery. При этом программный код значительно упрощается.

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

Итак, наш выбор пал на библиотеку jQuery и ее видение Ajax.

Первое, что нужно сделать — это подключить библиотеку к нашему проекту. Как это реализовать я рассказывал в первом видеоуроке по jQuery. Единственное дополнение — лучше будет не пользоваться библиотекой на серверах Google, а скачать ее себе на компьютер.

Чуть-чуть теории Ajax

Ajax работает следующим образом:

Данные с определенной страницы передаются в файл с PHP-скриптом, который, учитывая полученные данные, формирует ответ и передает его назад той самой определенной странице без ее перезагрузки (асинхронно).

Практика использования Ajax+jQuery

Постановка задачи: загрузка определенной страницы инициирует получение информации из MySQL-базы данных. Полученная посредством PHP-скрипта информация асинхронно передается в определенную страницу и подставляется в поля ввода.

Листинг 1: PHP-скрипт, получающего из базы данных значения и передающего их ajax-запросу:

<?
if (!mysql_connect(localhost, root, root))
{
	exit;
}
mysql_select_db("test");
$q = mysql_query("SELECT * FROM test_table");
$res = mysql_fetch_assoc($q);
echo json_encode($res);

Пояснение к коду:

2-я строка — соединились с базой данных (пользователь: root, пароль: root).

4-я строка — в случае безуспешной попытки соединения прекратить выполнение скрипта.

6-я строка — выбираем базу данных test.

7-я строка — выбираем все из таблицы test_table базы данных test (визуально структура test_table представлена на рис. 1).

8-я строка — текущая строка выборки из базы данных возвращается в виде ассоциативного массива.

9-я строка — выводится перекодированный в формат json ассоциативный массив.

Структура таблицы test_table:
Структура таблицы базы данных
Рис. 1: Струтура таблицы test_table.

Все, что отправляется на вывод PHP-скрипта, будет передано ajax-запросу (Листинг 2), в том числе и содержимое базы данных, преобразованное в json в виде объекта с именем data. Для доступа к полям id и content таблицы базы данных необходимо обратиться к соответствующим полям объекта data: data.id и data.content

Листинг 2: Ajax jQuery-код определенной страницы (раздел head HTML-документа):

<script type="text/javascript">
$(document).ready(function(){
	$.ajax({
	  type: "POST",
	  url: "/ajax.php",
	  dataType: "json",
	  success: function(data)
	  {
		$("#inp1").val(data.id);
		$("#p1").text(data.content);
	  }
	});
});
</script>

Пояснения к коду:

2-я строка — дожидаемся загрузки всего документа и лишь после этого выполняем код асинхронного запроса (пояснение необходимости ожидания загрузки документа см. в первом видеоуроке по jQuery).

4-я строка — способ отправки данных в файл с PHP-скриптом (POST или GET) (пока мы PHP-скрипту ничего отправлять не будем, но тип глобального массива отправки все равно укажем).

5-я строка — путь к файлу с PHP-скриптом (PHP-скрипт представлен в Листинге 1).

6-я строка — тип принимаемых от PHP-скрипта данных. Да-да, именно json.

7-я строка — если запрос к серверу успешно обработан (PHP-скрипт вернул данные), то метод success выполнит инструкции, расположенные в инициализируемой на лету функции. Обратите внимание, в качестве аргумента функции передается массив data, именно он будет содержать данные, полученные из PHP-скрипта (так уж устроен jQuery).

9-я строка — размещение значения поля id объекта data в строке ввода с идентификатором inp1 (см. рис. 2). Для решения данной задачи применяется синтаксис селектора языка jQuery: я нахожу в документе элемент с id=”inp1” и, благодаря методу val, вписываю в него значение id объекта data.

10-я строка — в абзац с id=”p1” подставляется значение поля conten объекта data.
Схема функционирования ajax-запросов
Рис. 2: Структура проекта.

Ajax-отправка данных PHP-скрипту

Постановка задачи: после нажатия на кнопку организовать отправку данных методом POST из поля ввода формы PHP-скрипту и получить асинхронный ответ.

Немного преобразуем наш HTML (jquery.html) — добавим поле ввода <input type=”text” id=”inp0”>. Из него мы будем забирать значение для отправки PHP-скрипту.

Ajax-запрос будет запускаться после нажатия на вновь добавленную кнопку <input type=”button” id=»btn0″>.

Листинг 3: раздел BODY HTML-документа

<body>
	<p>Входные значения:</p>
	<p><input type="text" id="inp0"> <input type="button" value="Отправить запрос" id="btn0"></p>
	<p>Результаты обработки запроса:</p>
	<p><input type="text" id="inp1"></p>
	<p id="p1"></p>
</body>

Листинг 4: PHP-скрипт, отвечающий на Ajax-запрос

<?
if (isset($_POST["key"])) $key = $_POST["key"];
if (!mysql_connect(localhost, root, root))
{
	exit;
}
mysql_select_db("test");
$q = mysql_query("SELECT * FROM test_table");
$res = mysql_fetch_assoc($q);
$res['key'] = $key;
echo json_encode($res);

Пояснения к коду листинга 4:

2-я строка — получение содержимого поля key глобального массива POST (переданного Ajax-запросом) в переменную $key.

10-я строка — к массиву $res добавляется поле key, в которое записывается значение переданного методом POST параметра.

11-я строка — сформированный массив, включая поле key, отправляется в Ajax-запрос.

Листинг 5: Ajax-запрос с отправкой данных методом POST:

<script type="text/javascript">
	function runajax()
	{
		var inp0 = $("#inp0").val();
		$.ajax({
		  type: "POST",
		  data: "key=" + inp0,
		  url: "/ajax2.php",
		  dataType: "json",
		  success: function(data)
		  {
			$("#inp1").val(data.id);
			var temp = data.content + " " + data.key;
			$("#p1").text(temp);
		  }
		})
	}
	$(document).ready(function(){
		$("#btn0").click(runajax);
	});
</script>

Обратите внимание, теперь код Ajax-запроса спрятан внутри функции runajax(). Это приведет к тому, что Ajax-запрос будет обрабатываться только после вызова данной функции, а не сразу после загрузки документа, как это было в предыдущем примере.

Пояснение к коду листинга 5:

4-я строка — получение содержимого поля ввода с id=“inp0”. Для получения данных я использую все те же рекомендации официального сайта jQuery.

7-я строка — формируются данные для отправки PHP-скрипту. В глобальном массиве пост создается поле key со значением равным содержимому поля ввода id = “inp0”, именно его мы получали во 2-й строке Листинга 3.

13-я строка — сохраняем в переменную $temp содержимое полей data.content и data.key, разделенных пробелами.

14-я строка — содержимое переменной $temp выводится в абзац id=“p1”.

18-я строка — дожидаемся загрузки всего документа полностью.

19-я строка — демонстрируется интересный подход к обработке клика по кнопке id=“btn0”. Данный подход не требует создания обработчика событий в HTML-верстке, достаточно указать id нужного элемента и jQuery обработает требуемое событие.

Дело в том, что задачу можно решить установкой обработчика событий onClick кнопке: <input type=»button» value=»Отправить запрос» id=»btn0″ onClick=»runajax()»>, но такой подход смешивает во едино JavaScript и HTML, что философски неправильно.

Отправка Ajax-формы при помощи jQuery Form Plugin

Постараемся решить задачу номер 2 более простым способом. Для этого существует дополнение jQuery Form Plugin.

Скачаем и подключим данное дополнение к нашему проекту:

<script type=»text/javascript» src=»/jquery.form.js»></script>

Необходимо изменить HTML-код раздела BODY (добавить тег формы и кнопке id=»btn0″ изменить атрибут type=»submit»):

Листинг 6: Изменение jQuery-кода для применения jQuery Form Plugin

<script type="text/javascript">
	$(document).ready(function()
	{
		$('#myForm').ajaxForm(
		{
			dataType: "json",
			success: function(data)
			{
				$("#inp1").val(data.id);
				var temp = data.content + " " + data.key;
				$("#p1").text(temp);
			}
		});
	});
</script>

Пояснение к листингу 6:

4-я строка — под идентификатором id=“myForm” скрывается тег формы, добавленной в раздел BODY. Применение метода ajaxForm() не допускает перезагрузку страницы после нажатия кнопки id = «btn0″, вместо этого выполняется Ajax-запрос к файлу PHP-скрипта, указанного в теге формы myForm.

Остальной код без изменений.

С уважением, Андрей Морковин.


Если статья вам понравилась и вы не хотите пропустить свежие публикации, то подписывайтесь на RSS-ленту или получайте обновления сайта на эл. почту.


Похожие материалы:

  • http://wedesart.net.ua vomchik

    ойойой, большое спасибо, побежал смотреть и экспериментировать)

  • http://wedesart.net.ua vomchik

    забыл дописать.
    надеюсь, что покажите как прикрутить ajax в Kohana

    • http://www.sdelaysite.com Андрей Морковин

      В следующей публикации покажу как прикрутить Ajax к Kohana.

  • http://for-grib.ru/ Petr

    Полезно, но вот такое дело «data.id» и тому подобное, где обращаемся к data как к объекту, порой не работает в IE, и даже в Опера иногда. Лучше обращаться к data как к ассоциативному массиву.

    • http://www.sdelaysite.com Андрей Морковин

      Странно, я проблем, описанных Вами, не встречал.

      • http://google.com.ua Alex Riz

        Я тоже как-то не сталкивался, с такой проблемой, сколько по работе использую. Обыкновенный хеш, что с ним может быть не так.

      • http://google.com.ua Alex Riz

        Хотя вообще-то для JSON есть специальный метод в jquery getJSON там обрабатывается хеш в таком виде. А вот в простом методе ajax не уверен, может нужен eval(). Так как FF3.5, webkit (chrome, safari) имеют встроенные возможности для прямой обработки json ответа, и там работает при любом раскладе, а вот opera и ie<8 не умеют на прямую обрабатывать json

        • http://for-grib.ru/ Petr

          Ну getJSON аналогичен указанному в методе ajax dataType: «json» и type:»get» :)
          Помнится, у меня даже Dragonfly в Опере ругался на обращение к data как к объекту. Поэтому в подобных случаях пишу не data.id, а data['id'].
          Странно, может только у меня так)

          • http://google.com.ua Alex Riz

            «Ну getJSON аналогичен указанному в методе ajax dataType: «json» и type:»get»»

            Вообще да, но чет посетило меня сомнение))

            да уж опера, как это не прискорбно, но в последнее время так и норовит на звание — «глюко-браузера» чем свежее версия, тем больше ошибок обнаруживается. До IE конечно далеко, но тенденция не самая веселая.

  • VmP

    Это зачем не понял? $(«#p1″).text(temp);

    • http://www.sdelaysite.com Андрей Морковин

      Вписал значение переменной temp в абзац с id=p1.

  • http://freejoomlatemp.ru/ joomla

    Отличный видео урок, облазил пол инета пока нашел.
    Спасибо за то что хоть вы денег не хотите за урок

  • http://deff.me JohnDeff

    Андрей, как всегда великолепно!

    • http://www.sdelaysite.com Андрей Морковин

      Спасибо, я старался.

  • Валерий

    Андрей, а почему ваш любимый редактор Notepad++ а не к примеру TopStyle4?

    • http://www.sdelaysite.com Андрей Морковин

      На самом деле мой любимый редактор — это Dreamweaver 8 (потому что его можно было с торрента скачать) и NetBeans (http://www.sdelaysite.com/interesting/netbeans).

      В качестве простенького текстового редактора с подсветкой синтаксиса использую NotePad++ только потому, что он установлен в сборке Total Commander (TCUP — http://www.sdelaysite.com/interesting/rabochee-prostranstvo-3) и полностью меня устраивает (аналог PSPad).

      TopStyle я не пробовал.

      • Валерий

        Может Вы попробуете TopStyle4, а потом поделитесь мнением?

  • http://none Женя

    Спасибо, урок как раз вовремя. После серии уроков с коханой и жаваскриптом никуда не денешься и свяжешься с жквери и ажаксом. Пришлось качать уроки Максима Петренко по этой теме не днях. Но к сожалению у Максима очень сложно получается излагать свои мысли и его уроки более менее удобно использовать как исходники кода с подробным видео-комментарием ))).. Как говориться все познается в сравнении. Спасибо, Андрей, за то что тратишь время и даешь довольно качественные пояснения по материалу.

  • http://none Женя

    Если кто-то будет под линуксом голову ломать почему не работают примеры из урока, то нужно убрать слеш из этой строки url: «/ajax.php»,

    • http://google.com.ua Alex Riz

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

  • Максим

    Андрей, продолжение уроков по Kohana будет?

  • Pingback: Kohana и Ajax - Видеоурок

  • AlexV

    На серверах Google можно указывать версию библиотеки, что в ней может измениться? А jQuery все-таки лучше грузить с google. Вот тут неплохо про это написано http://www.xiper.net/collect/js-plugins/overclock-site/why-jquery-is-better-to-download-from-google.html

  • Алексей

    Спасибо, отличный урок. Наконец-то на пальцах объяснили, супер!

  • http://www.books01.ru Stas

    а если в базе несколько строк то как они выводятся?

  • Вячеслав

    Здравствуйте,
    Можно вопрос?
    У меня на странице есть текстовое поле и кнопка. К текстовому полю привязан обработчик на change, в котором содержится асинхронный запрос. К кнопке привязан обработчик на click.
    Если асинхронный запрос выполняется быстро, то обработчик на click кнопки отрабатывает нормально. Но, если запрос выполняется чуть дольше, то обработчик click даже не запускается.
    Если сделать запрос синхронным (async = false), то все нормально отрабатывает.

  • kovt

    Добрый день.
    У меня, если содержимое поля content на английском языке (hello), то всё нормально, если кирилические (Привет)- не выводится. firebug показывает содержимое id.content =null. Почему так?

    • kovt

      Разобрался, надо было отредактировать файл my.cnf, изменив кодировку по умолчанию на utf8.

  • AlexV

    kovt, какая у вас кодировка? AJAX в utf8 все пересылает, может в этом дело?

    • kovt

      Дамп базы данных брал на сайте, кодировка таблицы и поля: utf8_general_ci

  • http://---- Богдан

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

  • Петр

    нефига не пашет полтара часа увалил зря только

  • Андрей

    Здравствуйте. Выручите. Уже сутки мучаюсь, не сплю.
    var gogogo = $(‘gologin2′).val();
    //$.post(«engine/add.php»,{gogogo:$(goautorizationform.gologin).val()}); }
    $.ajax({
    type: «POST»,
    data: «key=» + $(‘gologin2′).val(),
    url: «engine/add.php»,
    success: function(data){$(«h2″).text(data)}

    Пост запрос идёт, но key = » и данные отсылаются пустые, хотя они есть.
    $(‘gologin2′).val() = логин
    а key = » .В чём может быть проблема?
    Очень прошу. Спасибо.

  • Андрей

    Решил. Вместо $_POST было написано $_post
    Тупо очень.
    Сутки похоронил:)

  • http://dcserver.ru iru

    а что можно сделать, если я в ответ ajax ожидаю получить не одну строчку из базы, а сразу несколько строк (массив)?
    |id|content|
    |1|Привет|
    |2|Пока|
    |3|Hello|

  • AlexV

    iru, про JSON слышали что-нибудь? пост внимательнее перечитайте

  • Алексей

    Спасибо, всё ясно и доступно.
    Максим, такой вопрос.
    А если мне надо менять на странице таблицу, например было три строки, стало две, тут уже формат данных JSON не прокатит? Я так понимаю php-скрипт должен возвращать данные в формате html?
    Например было

    1
    2
    3

    после нажатия на кнопку стало

    1
    2

    Как это реализуется?
    Спасибо!

    • Алексей

      не знал что в каментах тэги поддерживаются.
      В общем было

      1
      2
      3

      после нажатия на кнопку стало

      1
      2

      • Алексей

        )))) приятно поговорить с умным человеком. В общем там тэг table с кол-вом рядов 3 до и 2 после изменения.

  • Алексей

    Вопрос снят. Разобрался.

  • Александр

    Вопрос.
    Объясните что будет происходить если в теле формы будет 2 кнопки?
    Ни submit ни btn0 в коде невидно для инициализации функции.
    Подозреваю что в патче-модуле myform воспринимает любую кнопку?
    Т.е. если их там будет несколько и у каждой type=»submit» то при нажатии на любую кнопку функция запустится.
    Непривычно смотреть на код в котором невидно обработчика события в явной форме.

    • Алексей

      дело не в type=submit а в id=btn0
      Вот и обработчик:

      $(document).ready(function(){
      $(«#btn0″).click(runajax);

  • Александр

    Нет в последнем примере данной конструкции нету и нету упоминания в скрипте btn0

    • Алексей

      А, я понял.
      Тогда к вам такой вопрос: а зачем для формы делать несколько кнопок с типом Submit?

  • Александр

    Все ясно) . Спасибо

  • http://fotomemory.com.ua/ Фотограф Сергей Навроцкий

    Отличная статья, буду пробовать! Мне нужно чтобы при нажатии на кнопку обновить, появлялся результат вывода статьи, запрос у меня выводиться ORDER BY MD5(RAND()) LIMIT 1

  • Вавилен Татарский

    Спасибо огромное!
    Пишу на Перле. пхп вообще не знаю.
    js только начал изучать.
    Мне всё понятно до последнего сказанного слова в данном видеоуроке!
    Огромное спасибо!

  • Евгений

    Статья хорошая. Все описано доступно и подробно.
    А можно как нибудь передать серверу, дескриптор соединения с БД?
    а то при использовании oci_pconnect при каждом обращении апач создает новую сессию к базе.

  • Бориска

    Спасибо тебе человек огромное!
    Я облазил уже столько саитов. Просто писать хочу на Jquery + Ajax + PHP + HTML , но вот с Ajax’ом только начал знакомиться. И нигде не мог наити, почему после обработки сервера используют объект data. Ты прям разжевал и положил в рот )))). Хотел только уточнить, что ещё видел, что указывают иногда, после обработки скриптом в success: function(){$(‘#my_div’).html(html);} правильно ли я понимаю, что здесь (html) это переданный объект целый HTML страницы, которую запросили черезе get: target.html ?

    Спасибо большое!

  • Алекс

    Подскажите пожалуйста, раньше я получал данные от php json методом each, и на примере понравилась конструкция text(data.key) Но не может ни в одном браузере получить данные из такой конструкции. Пишет undefined. Может быть правильней использовать each для перебора массива полученного? потому что очень бы хотелось как у вас, без перебора, только по ключам самому.

  • AlexV

    главное, чтобы на сервере в массиве были те же ключи, которые вы пытаетесь на клиенте использовать, т.е. чтобы обратиться к data.key на сервере надо вернуть json_encode(array(‘key’=>’что-то там’))

  • Игорь

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

    Но столкнулся с проблемой, отрабатывая урок:на Денвере всё сделал » по нотам» , но упорно игнорируется слово «Привет» (шучу) просто не выводится информация из ячейки если в ней есть хотя бы одна буква кириллицей. Английский и цифры выводятся: jquery.html изменил на jquery.php и с помощью PHP скрипта всё вывел без искажений. Пожалуйста, подскажите как с этим бороться — боюсь завязнуть в этих кодировках

  • Александр

    Пожалуйста кто может показать простой код отправки например двух двумерных массивов разнотипных данных на сервер и получение ответа с сервера показав эти массивы.

    Заранее спасибо.
    Мучился мучился но с массивами не получается.

    • AlexV

      Александр, какой код вы ожидаете увидеть? как на JS массивы создавать? http://api.jquery.com/jQuery.ajax/ тут достаточно подробно расписан синтаксис $.ajax(). Вкратце, можно так:
      $.ajax({
      type: «POST»,
      dataType: «json»,
      ….
      data:{
      «key11″:»val11″,
      «key12″:{
      «key21″:»val21″,
      «key4″:»val4″
      }
      }
      ….
      }
      на сервере получаете массив $_POST[], обрабатываете его и пакуете ответный массив функцией json_encode() и тут получите объект в callback функцию

      • Александр

        Я новичек в этом деле и читать документации по на английском не особо умею.
        ну вот вы отправляете массив потом словами пишите обект в callback функцию.
        для меня это темный лес.
        как получить функцию и отправить данные обратно хз

        • AlexV

          callback функция — это success: function(data) в данном примере. Вот в data и будет массив с сервера, тогда data.key11 равно val11, data.key12.key21 == val21 и т.д. (ключи из моего примера)

          • Александр

            Я ждал полного примера а не словесные рассуждения.
            Извините.
            Хотел увидеть на реальном работающем примере а не пояснения.

            • Александр

              Читал в инете но подходящего простого примера так и не нашел.

              • Александр

                Вот мой код :

                Если введете 1 то сервер ее и отдаст иначе выведет данные с сервера

                Имя:
                Имя:
                Имя:

                function saveform (r)
                {
                var name = r.name.value; //наверно функция.название элемента-переменной.значение
                var name1 = r.name1.value;
                var name2 = r.name2.value;
                var per;
                //var name9 = r.name.value;
                //var name = [12, 13, 14];

                //name1=array(1,2,3,11,22,33);
                //name2=array(1,2,3,11,22,33);
                // name1=[[1,2,3],[11,22,33]]; //отправка произвольных данных
                //name=»0,1,23456789″;
                // name=».»+name1+».»+name2+»/»; //работает обединение строк
                $.post(‘save.php’,{name:name,name1:name1,name2:name2},function(r){ //Сдесь можно явно указать данные для отправки путем напрмер name:»dfdsfhghgfhfg»
                $(‘#enter_name’).html(r);
                //$(per).html(r);
                //per=per+»vot»;
                $(‘#enter_name2′).html(r);
                //alert(['Функция успешна']); //выводит окно сообщения
                //но передать массив так и неудалось
                },’json’); //в конструкции {name:name} второе значение имя переменной-элемета
                }

                Вот save.php:

                <?
                /*
                $names[0][0]=1;
                $names[1][1]=2;
                $names[2][0]=3;
                $names[3][1]=4;

                echo $names[3][1];
                */

                if ($_POST['name']=="1") // если с клиента была отправлена 1 то оставляем единицу если чторлибо другое то
                //отправляем данные с php файла
                {
                $str="Вы передали единицу '";
                $_POST['name']="Куку $str".$_POST['name']."'";
                }
                else
                {

                //$names[0][0]=2;
                //$_POST['name']=$name[0];
                //$_POST['name']="Куку $str";

                //Разбиение принятой строки как одномерный массив массив
                //$str=$_POST['name'];
                // $_POST['name']=$str[2];

                /*
                $str=$_POST['name'];
                $strL=strlen($str);
                $_POST['name']=$str;
                */

                //$_POST['name']=$str[2];

                /*
                for ($i = 1; $i

                я не знаю как извлечь массив в функции там где $(‘#enter_name’).html(r);

  • Александр

    Извините, не думал что получится как флуд.

  • AlexV

    Чтобы с сервера передать массив, надо его упаковать в json с помощью функции json_encode().Например, на сервере
    json_encode(array(‘key1′=>val1,key2=>val2))
    даст в callback функции массив (data.key==val1, data.key2==val2)
    совет на будущее: выкладывайте код куда-нибудь на http://pastebin.com/ а сюда ссылку, а то половина не влезла сюда

    • Александр

      Собственно вот что получилось:

      function saveform (r)
      {
      $.post(‘save3.php’,{name:([12, 13, 14],[174,37,3434])},function(r){
      $(‘#enter_name’).html(r);
      },’json’);
      }

      save3.php:

      проблемы:
      1)массив получается строковый а не цифровой ( хотелось бы 2 варианта сразу)
      2) если убрать ‘[0][0]‘ в save3.php то будет ошибка

      Подскажите как можно вывести цифровые данные всего массива

      Заранее спасибо.

  • Александр

    Или мб где то ошибка

  • Александр

    Одновременно передать и вывести два массива неполучается

  • Александр

    Первый вопрос решил ( скобка окаймляющая общая квадратная должна быть для цифр)

  • Александр

    Но реально я передаю обратно в скрипт только один элемент а не ввесь массив(

  • Александр

    А в ваших пояснениях в «key11″:»val11″,

    «″ ‘ попробуй разберись зачем это нужно и везде по разному как мусор хз.

  • Александр

    Я все го лишь прошу наглядный полный реально работающий пример
    У меня выводится null.
    Так можно до бесконечности объяснять.

    Просто покажите реальный пример 2х фалов ( клиента и сервера),
    полный пример.

  • AlexV

    «″ ‘ — это парсер местный так исковеркал кавычки :)

  • Александр

    Все допетрил наконецто.
    Смог передать два двумерных массива, модифицировать передать обратно клиенту и вывести полностью оба массива.

    Спасибо огромное за терпение.

  • Максим

     Здравствуйте. Большое спасибо за такие класные уроки!