Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
5 / 5 / 3
Регистрация: 19.09.2013
Сообщений: 303

Передача массивов в js из php посредством ajax

24.09.2013, 20:12. Показов 1527. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно передать из пхп в джаваскрипт два массива, причем длину каждого я не знаю. один массив название регионов, второй массив идентификатор регионов. и потом в селект запихать в value и в само значение. Как передаются массивы таким образом ?

Добавлено через 9 минут
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$(document).ready(function(){
    var region = document.getElementById('#region');
    $('#country').change(function(){
          for (var j = region.options.length - 1; j >= 0; j--)
              {region.options[j] = null;}
          var country = $('#country').val();
          $.ajax({
              type : "POST",
              url : "ajax/region.php",
              data : "region=" + country ,            
              success: function(html){
                       
                  }           
              })                  
    })  ;
})
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$i=0; 
    if (isset($_POST['region']))
        {
            $s = $_POST['region'];
            $result = mysql_query("Select `id_region`,`region` from `region` where `id_country`=$s", $db);
            while ($row = mysql_fetch_array($result))
            {
                $id_region[$i]=$row['id_region'];
                $region[$i]=$row['region'];
                $i++;
            }   
        }
Задача: при смене в селекте #country, загрузить в селект #region регионы нужной страны. не пойму что писать в success: function(html){ } , и как из пхп файла кинуть оба массива .
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.09.2013, 20:12
Ответы с готовыми решениями:

Передача данных формы скрипту php посредством js (ajax)
Вопрос по ajax. <?php header('Content-type: text/html; charset=UTF-8'); ?> <html> ...

Вывод данных из БД посредством Ajax
Здравствуйте. Разбираюсь с Ajax. На странице есть несколько селектов: <select>...

Оптимизация и доработка выпадающего меню с загрузкой, посредством Ajax, контента
Всем добра. Делаю меню для сайта, вот сам код. <ul class="sub-catalog"> <li> <a...

14
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
24.09.2013, 21:12
Через PHP — join(), а через JS — split(). То есть сначала — массив превращаете в строку с помощью PHP, выводите, элементы массива будут отделены выбранным символом, а затем разбиваете строку на массив в JS.
0
странник
 Аватар для Donald28
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
24.09.2013, 23:31
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function(){
    var region = document.getElementById('#region');
    $('#country').change(function(){
          for (var j = region.options.length - 1; j >= 0; j--)
              {region.options[j] = null;}
          var country = $('#country').val();
          $.ajax({
              type : "POST",
              url : "ajax/region.php",
              data : {region:country},
              dataType: 'json',   // получать будем данные в формате json
              success: function(html){
                       alert(html.id_region[0]+' - '+html.region[0]); // выводим первые значения массивов id_region и region
                  }           
              })                  
    })  ;
});
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$i=0; 
    if (isset($_POST['region']))
        {
            $s = $_POST['region'];
            $result = mysql_query("Select `id_region`,`region` from `region` where `id_country`=$s", $db);
            while ($row = mysql_fetch_array($result))
            {
                $id_region[$i]=$row['id_region'];
                $region[$i]=$row['region'];
                $i++;
            }
            $exit=array('id_region'=>$id_region, 'region'=> $region); // формируем ассоциативный массив
            echo json_encode($exit); // выводим этот массив в формате json
        }
0
5 / 5 / 3
Регистрация: 19.09.2013
Сообщений: 303
25.09.2013, 12:32  [ТС]
Donald28, ну чет у меня алерт не сработал. теоретический вопрос: а что такое html в функции success'a ?
0
странник
 Аватар для Donald28
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
25.09.2013, 13:33
bulletproof24, html содержит ответ от сервера (то, что написал вызываемый php-файл)
0
5 / 5 / 3
Регистрация: 19.09.2013
Сообщений: 303
25.09.2013, 13:56  [ТС]
Donald28, а почему мы точку ставим после него, когда хотим обратиться к элементу массива, точка же при методе ставится ? слушай , ну у меня алерт не вызывается как и append и т.д. где ошибка может быть ?
JavaScript
1
dataType: 'json'
это тоже добавил
0
странник
 Аватар для Donald28
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
25.09.2013, 14:06
"через точку" jQuery обрабатывает результаты в формате json

Добавлено через 3 минуты
Возможно, у тебя ошибка в php скрипте. Т.е. на ajax запрос приходит ошибка. Посмотри через хром, что отправляется на сервер и что приходит от него.
0
5 / 5 / 3
Регистрация: 19.09.2013
Сообщений: 303
25.09.2013, 14:14  [ТС]
Цитата Сообщение от Donald28 Посмотреть сообщение
Посмотри через хром, что отправляется на сервер и что приходит от него.
Как ?
0
странник
 Аватар для Donald28
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
25.09.2013, 14:22
правой клавишей по странице --> просмотре кода элемента.\

Потом выбираешь вкладку Network. Вызываешь событие, которое должно вызывать ajax и смотришь результат.
0
5 / 5 / 3
Регистрация: 19.09.2013
Сообщений: 303
25.09.2013, 14:36  [ТС]
Donald28,
Миниатюры
Передача массивов в js из php посредством ajax  
0
5 / 5 / 3
Регистрация: 19.09.2013
Сообщений: 303
25.09.2013, 14:37  [ТС]
404 ошибка в js указана
0
5 / 5 / 3
Регистрация: 19.09.2013
Сообщений: 303
26.09.2013, 18:23  [ТС]
Donald28, проблему решил, короч в одну строку записал все это :
PHP
1
echo json_encode(array('id_region'=>$id_region,'region'=>$region));
и норм запахало. если в две то не работает, хер его знает почему. Только сейчас другая трабла - Выбираю страну, скажем Россию, и в селекте регионов идет не выбор сразу значений, а как бы новый селект , то есть я щелкаю по расскрывающемуся списку регионов и он мне новый расскрывающийся селект открывает и по нему нужно еще раз щелкнуть. странная херня конечно, кто-нибудь сталкивался ?
0
странник
 Аватар для Donald28
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
26.09.2013, 23:14
из словесного описания ничего не понятно. Может код поможет.
0
5 / 5 / 3
Регистрация: 19.09.2013
Сообщений: 303
27.09.2013, 07:49  [ТС]
Donald28,
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function(){   
    $('#country').change(function(){
           $('#region').empty();          
          $.ajax({
              type : "POST",
              url : "ajax/region.php",
              data : "region=" + $('#country').val() ,
              dataType: 'json',           
              success: function(html){   
                    $("#region :first").remove();
                    $('#region').prepend(new Option("Выбор региона","0"));
                    for (var i=0;i<(html.region).length;i++)
                        {$('#region').append(new Option(html.region[i],html.id_region[i]));     }                               
                  }           
              })
              $('#region').attr('size', $('#region option').size());                  
    })  ;
я вот думаю, может с автомасштабироемостью че-то не так ?
0
странник
 Аватар для Donald28
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
27.09.2013, 21:09
скорее всего это из-за new Option (не силен в чистом JS).
JavaScript
1
2
3
4
 // зачем тебе это? ты же все содержимое #region удалил ранее?  $("#region :first").remove();
   $('#region').html('<option value="0" selected="selected">Выбор региона</option>'));
   for (var i=0;i<(html.region).length;i++)
      $('#region').append('<option value="'+html.region[i]+'" selected="selected">'+html.id_region[i]+'</option>');
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2013, 21:09
Помогаю со студенческими работами здесь

Отрендерить таблицу посредством технологии ajax
Здравствуйте. Делаю учебное задание - сверстать и &quot;оживить&quot; табличку (ну, то есть просто верстка и...

Как передать данные посредством ajax методом post?
Добрый день! Как передать посредством ajax методом post, так чтобы было доступно name и value? ...

Передача массива из php в js ajax
Доброго всем дня. Суть в чем. Передаю массив ошибок с помощью serialize() в файл js, однако русские...

Передача значение полей через Ajax-метод с использованием ассоциативного массива на php сервер
Добрый день граждане, возможно ли так реализовать ? Предположим что есть 3 поля. Каким способом...

Отправить массив из php(handler, сервер) в php(ajax, клиент)
Дело вот какое: имеется база сотрудников. Клиенту в браузер выдаю список (select). При выборе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru