С Новым годом! Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 18

Заполнение формы через ajax

30.12.2014, 08:16. Показов 3959. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Хочу сделать что-то вроде интерфейса для работы с карточками сотрудников. БД на MSSQL.
Есть форма с выбором сотрудника из списка (формируется запросом из БД).
По сабмиту (или изменению) этой формы нужно сделать запрос в БД и результат распихать по инпутам второй формы.
Пытаюсь сделать так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
$(document).ready(function(){
    $('#kod').change(function(){
        $.ajax({
            type: "POST",
            url: "show.php",
            data: "kod="+$("#kod").val(),
            success: function(html){ 
                $("#dataForm").html(html); // результатом работы скрипта, естественно, затирается DIV "dataForm"
            }
        });
        return false;
    });
});
show.php:
PHP
1
2
3
4
5
6
7
8
<?php
include('conf.php');
$all0 = new MSSQL ($SQL,''); 
$conn = $all0->connect();
$all0->SQLquery = "SELECT * FROM dbo.TS_SpravSotr INNER JOIN dbo.TS_SpravOtdel ON dbo.TS_SpravSotr.Иерархия LIKE '%' + dbo.TS_SpravOtdel.КодОтдела + '|' INNER JOIN dbo.TS_SpravPodrazd ON dbo.TS_SpravSotr.КодПодразделения = dbo.TS_SpravPodrazd.КодПодразделения WHERE (TS_SpravSotr.Код = '".$_REQUEST['kod']."')";
$data = $all0->sql_query();
print_r($data);
?>
Результат ajax-запроса - это массив вида:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array
(
    [0] = Array
        (
            [Код] = Петров
            [Сотрудник] = Петров Иван
            [Фамилия] = Петров
            [Имя] = Иван
            [Отчество] = Сидорович
            [Должность] = слесарь-маммолог :)
            [КодРуководителя1] = Иванов
            [КодРуководителя2] = Сидоров
            [Пароль1С] = 
            [ЕстьКарта] = 1
            [НомерКарты] = 1234567890
         )
Собственно, для каждого элемента массива есть соответствующий инпут во второй форме, куда и нужно всё полученное распихать.
Пока что при выборе любого сотрудника затирается вся форма, и вместо нее летит этот самый Array ( [0] = ...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.12.2014, 08:16
Ответы с готовыми решениями:

Ajax загрузка формы из загруженного через ajax блока
Вообщем, через ajax в блок подгружается форма, из нее нужно загрузить в этот же блок др.контент. $('#form').submit(function(e){ ...

Заполнение select через AJAX и JavaScript
Здравствуйте! Заполняю данные в select через AJAX вот так: function loadProjectsList() { /** * Выполняет отрисовку данных,...

Недостаток отправки формы через Ajax
Сделал через аякс отправку емайла. Почему мало кто делает отправку писем через аякс ? Опасно тем, что письмо может не дойти ? Или не должно...

8
Superposition
 Аватар для Padimanskas
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
30.12.2014, 09:33
Из php, перед выводом, нужно отправить заголовок content-type о том что это json, а в обработчике реализации ajax нужно указать какой тип данных принимает клиент.

PHP
1
header('content-type: application/json');
JavaScript
1
2
3
4
5
$.ajax({
  dataType: "json",
  ...
  ...
});
0
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 18
30.12.2014, 10:17  [ТС]
сделал. Теперь при выборе сотрудника из списка не происходит вообще ничего. Однако дев-тулза хрома показывает, что запрос отработал, и в ответе данные есть...
0
Superposition
 Аватар для Padimanskas
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
30.12.2014, 10:55
OMG, Ну проверьте какие данные приходят в обработке ajax ответа, погуглите как правильно пишется content-type...

JavaScript
1
2
3
4
5
6
7
8
9
10
11
$(document).ready(function(){
    $('#kod').change(function(){
        $.ajax({
            ...
            success: function(json){ 
                console.log(json);
            }
        });
        return false;
    });
});
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
30.12.2014, 13:18
Цитата Сообщение от Mortgoroth Посмотреть сообщение
результатом работы скрипта, естественно, затирается DIV
Это и понятно, т.к. метод html() заменяет содержимое элементов или возвращает его, если вызывается без передачи аргумента/функции.
Передавать заголовок с указанием "content-type" - совсем не обязательно, т.к. определив тип ожидаемых данных (dataType: "json"), как правильно подсказал Padimanskas, метод $.ajax() уже будет знать, как нужно парсить полученный ответ и в success, вы получите готовый к использованию "объект". Всё бы ничего, но смущает то, что у вас ассоциативные ключи в исходном массиве на русском. Поэтому, попробуйте использовать такой синтаксис:
JavaScript
1
2
3
4
5
6
7
/* ... */
success: function(json){ 
    console.log(json[0]['Сотрудник']); // Петров Иван
    console.log(json[0]['Должность']); // слесарь-маммолог :)
    // и т.д.
}
/* ... */
0
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 18
13.01.2015, 07:36  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
ассоциативные ключи в исходном массиве на русском
ну, это потому, что некоторые старшие сотрудники из иностранных языков владеют зачатками немецкого, а вот великим могучим, чрезвычайно богатым, гибким и живописным - вполне сносно
Каюсь, за время праздников не попробовал воспользоваться вашими рекомендациями, но обязательно исправлюсь в ближайшее время
0
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 18
11.03.2015, 15:16  [ТС]
Спустя годы добрался до рекомендаций. И тут началось...
Сделал dataType: "json", в show.php завернул $data в json_encode, получил невнятную строку типа
JSON
1
[{"\u041a\u043e\u0434":"........}]
Причем success не отрабатывает, alert(json) вылезает только в error и говорит, что там [object Object]. Ничего, пара месяцев курения гуглов, и я разберусь, что делать с этим объектом. Смущает то, что оно не в success...
А так
JavaScript
1
2
3
        error: function (XMLHttpRequest, textStatus, errorThrown, jqXHR) {
            alert("error :"+XMLHttpRequest.responseText);
        }
я в алерте получаю всю строку json
В общем, я окончательно запутался...

Добавлено через 2 минуты
полный код всего этого сумбура:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$(function(){
  $('#kod').change(function(){
    $.ajax({
    dataType: "json",
    type: "POST",
    url: "show.php",
    data: {'kod':$("#kod").val()},
    success: function(data){ 
        alert(data);
    },
        error: function (XMLHttpRequest, textStatus, errorThrown, jqXHR) {
            alert("error :"+XMLHttpRequest.responseText);
//      alert(data)
//      $("[name=ln]").val(data['Фамилия']);
        }
      });
      return false;
  });
});
show.php:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
include('conf.php');
header('Content-Type: application/json;charset=utf-8');
$all0 = new MSSQL ($SQL,''); 
$conn = $all0->connect();
    $all0->SQLquery = "SELECT * FROM dbo.TS_SpravSotr INNER JOIN dbo.TS_SpravOtdel ON dbo.TS_SpravSotr.Иерархия LIKE '%' + dbo.TS_SpravOtdel.КодОтдела + '|' INNER JOIN dbo.TS_SpravPodrazd ON dbo.TS_SpravSotr.КодПодразделения = dbo.TS_SpravPodrazd.КодПодразделения WHERE (TS_SpravSotr.Код = '".$_REQUEST['kod']."') ORDER BY Код";
$data = $all0->sql_query();
 
//print_r($data);
//return $data;
print_r(json_encode($data));
return json_encode($data);
?>
0
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 18
13.03.2015, 14:42  [ТС]
странная ерунда:
при
PHP
1
2
header('Content-Type: application/text;charset=utf-8');
print_r(json_encode($data[0]));
и
JavaScript
1
//  dataType: "json",
работает success. Стоит только или раскомментировать datatype, или в header объявить json, или убрать json_encode - срабатывает error...

Добавлено через 7 часов 49 минут
разобрался... камни там, где даже не ожидал... в show.php было много ^M и . в самом начале файла... фар, зараза такая, этого безобразия не видит, а вот mcedit всю эту красоту мне показал...
0
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 18
30.03.2015, 14:20  [ТС]
окей, продолжим изыскания...
будем считать, что c заполнением формы при onchange (выбор сотрудника из списка) разобрались.
форма задумывалась не сама по себе, а как дополнительная страница к телефонному справочнику, где ткнув на имя нужного сотрудника админ должен попасть на страничку с нашей формой. Допустим, адрес перехода выглядит так:
http://test/admin.php?id=Сидоров
admin.php - страница с формой, заполняемой аяксом
Вопрос: как при получении _GET в admin.php выполнить ajax-запрос?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.03.2015, 14:20
Помогаю со студенческими работами здесь

Отправка формы с php через AJAX
В общем у меня есть php файл. В него надо передать данные через форму и выполнить его так, что бы страница не обновлялась... делаю так: ...

Отправка данных с формы через ajax
Всем привет) У меня появились сразу 2 проблемы (вроде всё верно написано, но не работает). В общем вот у меня есть вот 1 форма ...

При передаче данных через AJAX не передаются некоторые поля формы
Я новичок, так что сильно не плюйтесь )) Возникла проблема при передаче данных формы обработчику AJAXом. Собственно, форма ...

Вывод модальной формы после отправки формы AJAX
Здравствуйте, помогите, пожалуйста, разобраться, есть модальная форма arcticmodal для просмотра этой формы можно найти её в поисковике, она...

Передача массива через POST и подгрузка файла через AJAX
Доброго времени суток. Задача такого : есть элемент select в котором можно выбрать несколько вариантов. Далее по нажатию на кнопку, должен...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru