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

Передача и вывод массива AJAX

11.01.2019, 23:15. Показов 3799. Ответов 4

Студворк — интернет-сервис помощи студентам
Всем, здравствуйте! Столкнулся с проблемой при выводе массива через AJAX. Есть index.php, где есть две формы:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!doctype html>
<html>
<head>
    <title>Main</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
</head>
<body>
<script type="text/javascript" src="jquery.js"></script>
<script src="ajax.js"></script>
 
    <form  method="get" id="ajax_form" action="">
        <input name="id" class="form-group" type="text" placeholder="Номер заказа"><br>
        <input class="form-group" name="name" type="text" placeholder="Название товара"><br>
        <input name="price" class="form-group" pattern="^[ 0-9]+$" placeholder="Цена"><br>
        <input class="form-group" name="count" pattern="^[ 0-9]+$" placeholder="Колличество товара"><br>
        <input class="form-group" name="operator" type="text" placeholder="Имя оператора"><br>
        <p>Колличесто > 2 и id оператора 10 или 12: <input class="form-group" type="checkbox" name="check" value="1"></p>
        <input name="search" id="btn"  type="submit" value="Найти">
 
    </form>
<hr>
 
<div id="result_form"></div>
 
<hr>
 
<form id="a_form" method="get" action="">
    <input name="name_of" type="text" placeholder="Название товара">
    <input type="submit" id="btn1" value="Отобразить">
</form>
 
<div id="form"></div>
 
</body>
</html>
Вот ajax.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
$( document ).ready(function() {
    $("#btn").click(
        function(){
            sendAjaxForm('result_form', 'ajax_form', 'action_ajax_form.php');
            return false;
        }
    );
});
 
function sendAjaxForm(result_form, ajax_form, url) {
    $.ajax({
        url:     url,
        type:     "GET",
        dataType: "html",
        data: $("#"+ajax_form).serialize(),
        success: function(dataArray) {
            result = $.parseJSON(dataArray);
            $('#result_form').html('Название товара: '+result.name+'<br>Цена: '+result.price+'<br>Колличество товара: '+result.count+'Hi!');
        },
        error: function(response) {
            $('#result_form').html('Ошибка. Данные не отправлены.');
        }
    });
}
 
 
 
$( document ).ready(function() {
    $("#btn1").click(
        function(){
            sendAjaxForm('form', 'a_form', 'action_ajax_form.php');
            return false;
        }
    );
});
 
function sendAjaxForm(form, a_form, url) {
    $.ajax({
        url:     url,
        type:     "GET",
        dataType: "html",
        data: $("#"+a_form).serialize(),
        success: function(data) {
            result = $.parseJSON(data);
            $('#form').html('Название товара: '+result.name+'<br>Цена: '+result.price+'<br>Колличество товара: '+result.count);
        },
        error: function(response) {
            $('#form').html('Ошибка. Данные не отправлены.');
        }
    });
А вот сам обработчик:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
<?php
 
require_once "DB.php";
 
if (!empty($_GET['id']) or !empty($_GET['name'])
    or !empty($_GET['price']) or !empty($_GET['count']) or !empty($_GET['operator']) or !empty($_GET['check'])) {
 
    $results = offer();
    if (empty($results))
    {
        $result = [];
        echo json_encode($result);
    }
    echo json_encode($result);
}
 
if (isset($_GET['name_of']))
{
    function off()
    {
        $offer_id = DB::conn()->prepare('SELECT id FROM offers WHERE name=?');
        $offer_id->execute(array(trim($_GET['name_of'])));
        $offer_id = $offer_id->fetch()['id'];
        if (empty($offer_id)) {
            $result = [];
        }
        $req = DB::conn()->prepare('SELECT `count`, price FROM requests WHERE offer_id=?');
        $req->execute(array($offer_id));
        if (empty($req = $req->fetch())) {
            $result = [];
        } else {
            $result = array(
                'name' => trim($_GET['name_of']),
                'count' => $req['count'],
                'price' => $req['price']
            );
        }
        return $result;
    }
    $result = off();
    echo json_encode($result);
}
//функции обработки 1-й формы
function offer()
{
    if(isset($_GET['search']) and (!empty($_GET['id']) or !empty($_GET['name'])
            or !empty($_GET['price']) or !empty($_GET['count']) or !empty($_GET['operator']) or !empty($_GET['check'])))
    {
        $offers = [];
        if (!empty($_GET['check']) and empty($_GET['id'])and empty($_GET['name'])
            and empty($_GET['price'])and empty($_GET['count'])and empty($_GET['operator']))
        {
            $request = requests(NULL, NULL);
            if (empty($request))
            {
                $offers = [];
                return $offers;
            }
            foreach ($request as $row)
            {
                $offer_name = offers($row['offer_id'])['name'];
                $operator_name = operators($row['operator_id'])['name'];
                $offers[] = array(
 
                    'id' => $row['id'],
                    'name' => $offer_name,
                    'count' => $row['offer_count'],
                    'price' => $row['offer_price'],
                    'operator_name' => $operator_name
                );
            }
            if (!empty($offers))
            {
                return $offers;
            }
        }
        if(!empty($_GET['name']) and !empty($_GET['operator']))
        {
            $by_offers = offers(trim($_GET['name']));
            $by_operators = operators(trim($_GET['operator']));
            if (empty($by_offers) or empty($by_operators))
            {
                $offers = [];
                return $offers;
            }
            $offer_id = $by_offers['id'];
            $offer_name = $by_offers['name'];
            $operator_name = $by_operators['name'];
            $operator_id = $by_operators['id'];
            $request = requests($offer_id, $operator_id);
            if (empty($request))
            {
                $offers = [];
                return $offers;
            }
            foreach ($request as $row)
            {
                $offers[] = array(
                    'id' => $row['id'],
                    'name' => $offer_name,
                    'count' => $row['offer_count'],
                    'price' => $row['offer_price'],
                    'operator_name' => $operator_name
                );
            }
            if (!empty($offers))
            {
 
                return $offers;
            }
        }elseif (!empty($_GET['name']) and empty($_GET['operator']))
        {
            $by_offers = offers(trim($_GET['name']));
            if (empty($by_offers))
            {
                $offers = [];
                return $offers;
            }
            $offer_id = $by_offers['id'];
            $request = requests($offer_id, NULL);
            $offer_name = $by_offers['name'];
            if(empty($request))
            {
                $offers = [];
                return $offers;
            }
            foreach ($request as $row)
            {
                $operator_name = operators($row['operator_id'])['name'];
                if (empty($operator_name))
                {
                    $offers = [];
                    return $offers;
                }
                $offers[] = array(
                    'id' => $row['id'],
                    'name' => $offer_name,
                    'count' => $row['offer_count'],
                    'price' => $row['offer_price'],
                    'operator_name' => $operator_name
                );
            }
            if (!empty($offers))
            {
                return $offers;
            }
        }elseif (!empty($_GET['operator']) and empty($_GET['name']))
        {
            $by_operators = operators(trim($_GET['operator']));
            if (empty($by_operators))
            {
                $offers = [];
            }
            $operator_name = $by_operators['name'];
            $operator_id = $by_operators['id'];
            $request = requests(NULL, $operator_id);
            if (empty($request))
            {
                $offers = [];
                return $offers;
            }
            foreach ($request as $row)
            {
                $offer_name = offers($row['offer_id'])['name'];
                $offers[] = array(
                    'id' => $row['id'],
                    'name' => $offer_name,
                    'count' => $row['offer_count'],
                    'price' => $row['offer_price'],
                    'operator_name' => $operator_name
                );
            }
            if (!empty($offers))
            {
 
                return $offers;
            }
        }else{
            $request = requests(NULL, NULL);
            if (empty($request))
            {
                $offers = [];
                return $offers;
            }
            foreach ($request as $row)
            {
                $offer_name = offers($row['offer_id'])['name'];
                $operator_name = operators($row['operator_id'])['name'];
                $offers[] = array(
                    'id' => $row['id'],
                    'name' => $offer_name,
                    'count' => $row['offer_count'],
                    'price' => $row['offer_price'],
                    'operator_name' => $operator_name
                );
            }
            if (!empty($offers))
            {
                return $offers;
            }
        }
 
    }
    return $offers;
}
 
 
}
Вся проблема в том, что когда я обрабатываю 2-ю форму, то все выводиться, но при обработке первой я не получаю даже извещения об ошибке. Без подключения AJAX все работает. В первой форме получается ассоциативный массив, я могу понять почему его не выводит, но когда я пытался его преобразовать в обычный, выводя только одну запись из БД, результат я получал также нулевой. По логике, даже при передаче многомерного массива мне должно хотя бы вывести "array()". Кто знает в чем может быть проблема?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.01.2019, 23:15
Ответы с готовыми решениями:

Передача и вывод данных формы PHP, ajax
Добрый день! Столкнулся с проблемой: данные выводятся после перезагрузки страницы. Бился долго, вот решил попросить помощи Код...

AJAX передача массива
Не передается массив в data аяксом. Я уверен, что не правильно определил data , но как правильно не пойму. Потому в консоли получаю fail, а...

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

4
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
12.01.2019, 22:26
Можно пару скринов?
0
0 / 0 / 0
Регистрация: 11.01.2019
Сообщений: 3
12.01.2019, 22:35  [ТС]
Ну вот то что я могу заскринить, больше скринить нечего) Нашел пока одну ошибку, в обработчике выводил result, а создавал массив "results". Насколько я понял, основная проблемя принять аяксом многомерный массив и вывести его
Миниатюры
Передача и вывод массива AJAX  
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
15.01.2019, 09:29
Цитата Сообщение от Pisusio Посмотреть сообщение
то все выводиться, но при обработке первой я не получаю даже извещения об ошибке.
Потому что вы перезаписываете функцию sendAjaxForm(), плюс там в параметрах есть всё нужное, вы вызываете вроде как правильно, но зачем-то при выводе результата запроса захардкодили целевую форму
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$(document).ready(function() {
  $("#btn").click(
    function() {
      sendAjaxForm('result_form', 'ajax_form', 'action_ajax_form.php');
      return false;
    }
  );
 
  $("#btn1").click(
    function() {
      sendAjaxForm('form', 'a_form', 'action_ajax_form.php');
      return false;
    }
  );
});
 
function sendAjaxForm(result_form, ajax_form, url) {
  $.ajax({
    url: url,
    type: "GET",
    dataType: "html",
    data: $("#" + ajax_form).serialize(),
    success: function(dataArray) {
      result = $.parseJSON(dataArray);
      // $('#result_form').html('Название товара: ' + result.name + '<br>Цена: ' + result.price + '<br>Колличество товара: ' + result.count + 'Hi!');
      $('#' + result_form).html('Название товара: ' + result.name + '<br>Цена: ' + result.price + '<br>Колличество товара: ' + result.count + 'Hi!');
    },
    error: function(response) {
      // $('#result_form').html('Ошибка. Данные не отправлены.');
      $('#' + result_form).html('Ошибка. Данные не отправлены.');
    }
  });
}
1
0 / 0 / 0
Регистрация: 11.01.2019
Сообщений: 3
15.01.2019, 11:12  [ТС]
Спасибо!) Почти помогло, только я до сих пор не пойму, почему теперь когда пытаюсь вывести переменную result после строчки @var result = $.parseJSON(dataArray);@ ее присваивания в функции, то получаю на экран "null"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.01.2019, 11:12
Помогаю со студенческими работами здесь

Передача многомерного массива через Ajax
Добрый день. Имеется форма с чекбоксами, ссылка на скрин ниже https://ibb.co/dpQtWT Код вывода чекбоксов &lt;div...

Передача массива по AJAX
Уважаемые коллеги укажите на ошибку... Передаю по Ajax массив в php но на странице php при проверке var_dump($_POST) получаю...

Передача массива из input PHP + AJAX
Приветствую! Передаю массив из формы через ajax &lt;script type=&quot;text/javascript&quot;&gt; function saveopt() { var id =...

Передача массива из JavaScript(AJAX, JSON) в PHP
Добрый вечер! Ребят, тут такое дело, имеется схема зала с местами. У каждого места есть свой ID. По клику мы запоминаем ID (не больше...

Передача массива JSON + AJAX , видит массив как NULL
Задача не сложная, получить телефоны из формы, преобразовать в массив, и отправить как массив JSON(работать с ним буду потом) В консоли...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru