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

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

30.12.2014, 08:16. Показов 3975. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru