Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для Кателевский ВН
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94

Не парсит jQuery.parseJSON, не пойму почему

11.05.2020, 12:37. Показов 2495. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня учебная задача подгружать при прокрутке контент, типа стены в контакте. Не понимаю почему не парсит JSON.parse? Вот весь код:

index.php
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
<?php
require_once 'function.php';
require_once 'config.php';
 
$sql2 = "SELECT * FROM news ORDER BY 'id' DESC LIMIT 10";
$arrImgs = getResult($sql2);
 
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-3.5.1.min.js"></script>
    <script src="script.js"></script>
</head>
<body>
<div id='newsDiv'>
    <?php foreach ($arrImgs as $arrImg):?>
    <div style='border: 1px solid black;height: 100px;width: 100px;'>
        <p><?php echo $arrImg['name']?><br><?php echo $arrImg['text']?></p>
    </div>
    <?php endforeach;?>
    </div>
<button id="more">Дальше</button>
</body>
</html>

obrobotchik.php
PHP
1
2
3
4
5
6
7
8
<?php
require_once 'function.php';
require_once 'config.php';
$startFrom = $_POST['startFrom'];
 
$sql2 = "SELECT * FROM news ORDER BY 'id' DESC LIMIT {$startFrom}, 10";
 
echo json_encode(getResult($sql2), JSON_UNESCAPED_UNICODE);
config.php
PHP
1
2
3
4
5
6
7
8
<?php
/* DB config */
define('HOST', 'localhost');
define('USER', 'root');
define('PASS', '');
define('DB', 'forimg');
 
?>

function.php
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
<?php
 
 
function executeQuery($sql)
{
    $db = mysqli_connect(HOST, USER, PASS, DB);
    $result = mysqli_query($db, $sql);
    mysqli_close($db);
    return $result;
}
 
function getResult($sql)
{
    $db = mysqli_connect(HOST, USER, PASS, DB);
    $result = mysqli_query($db, $sql);
 
    $array_result = array();
    
    while ($row = mysqli_fetch_assoc($result))
    {
        $array_result[] = $row;
    }
 
    mysqli_close($db);
    return $array_result;   
}

script.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(){
 
    /* Переменная-флаг для отслеживания того, происходит ли в данный момент ajax-запрос. В самом начале даем ей значение false, т.е. запрос не в процессе выполнения */
    let inProgress = false;
    /* С какой статьи надо делать выборку из базы при ajax-запросе */
   let startFrom = 10;
 
    /* Используйте вариант $('#more').click(function() для того, чтобы дать пользователю возможность управлять процессом, кликая по кнопке "Дальше" под блоком статей (см. файл index.php) */
    $(window).scroll(function() {
 
        /* Если высота окна + высота прокрутки больше или равны высоте всего документа и ajax-запрос в настоящий момент не выполняется, то запускаем ajax-запрос */
        if($(window).scrollTop() + $(window).height() >= $(document).height() && !inProgress) {
 
            $.ajax({
                url: 'obrobotchik.php',
                type: 'POST',
                dataType:'json',/*пробовал её убирать, тоже эфекта 0)*/
                data: {startFrom : startFrom},
                /* что нужно сделать до отправки запрса */
                beforeSend: function() {
 
                    /* меняем значение флага на true, т.е. запрос сейчас в процессе выполнения */
                    inProgress = true;}
                /* что нужно сделать по факту выполнения запроса */
            }).done(function(data){
                
                /* Преобразуем результат, пришедший от обработчика - преобразуем json-строку обратно в массив */
                data = jQuery.parseJSON(data);
               
 
                /* Если массив не пуст (т.е. статьи там есть) */
                if (data.length > 0) {
 
                    /* Делаем проход по каждому результату, оказвашемуся в массиве,
                    где в index попадает индекс текущего элемента массива, а в data - сама статья */
                    $.each(data, function(index, data){
 
                        /* Отбираем по идентификатору блок со статьями и дозаполняем его новыми данными */
                        $("#newsDiv").append("<div style='border: 1px solid black;height: 100px;width: 100px;'><p>"
                            + data.name + "<br>" + data.text + "</p></div>");
                    });
 
                    /* По факту окончания запроса снова меняем значение флага на false */
                    inProgress = false;
                    // Увеличиваем на 10 порядковый номер статьи, с которой надо начинать выборку из базы
                    startFrom += 10;
                }});
        }
    });
});
Добавлено через 19 минут
Вот ещё забыл:
SQL
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
-- phpMyAdmin SQL Dump
-- version 4.9.0.1
-- https://www.phpmyadmin.net/
--
-- Хост: 127.0.0.1:3306
-- Время создания: Май 11 2020 г., 12:35
-- Версия сервера: 5.6.43
-- Версия PHP: 7.3.9
 
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
 
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
 
--
-- База данных: `forimg`
--
 
-- --------------------------------------------------------
 
--
-- Структура таблицы `news`
--
 
CREATE TABLE `news` (
  `id` INT(11) NOT NULL,
  `name` VARCHAR(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `text` text COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 
--
-- Дамп данных таблицы `news`
--
 
INSERT INTO `news` (`id`, `name`, `text`) VALUES
(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, 'новость', 'текст новости');
 
--
-- Индексы сохранённых таблиц
--
 
--
-- Индексы таблицы `news`
--
ALTER TABLE `news`
  ADD PRIMARY KEY (`id`);
 
--
-- AUTO_INCREMENT для сохранённых таблиц
--
 
--
-- AUTO_INCREMENT для таблицы `news`
--
ALTER TABLE `news`
  MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=33;
COMMIT;
 
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.05.2020, 12:37
Ответы с готовыми решениями:

JQuery.parseJSON
Всем привет. Имеем скрипт php где формируестя страница и где имеютс встроенные javascript. Все работает притензий нет. Переножу...

Ошибка jQuery.parseJSON()
jQuery.ajax({ url: url, type: &quot;POST&quot;, dataType: &quot;html&quot;, data: jQuery(&quot;#&quot;+ajax_form).serialize(), success:...

JQuery.parseJSON Синтактическая ощибка в консоле браузера
У меня стоит библиотека jQuery 2.1.3 и браузер показывает на jQuery.parseJSON = function( data ) { return JSON.parse( data +...

13
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
11.05.2020, 16:19
Цитата Сообщение от Кателевский ВН Посмотреть сообщение
data = jQuery.parseJSON(data);
зачем это? приходит и так json
Цитата Сообщение от Кателевский ВН Посмотреть сообщение
dataType:'json',
0
 Аватар для Кателевский ВН
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
11.05.2020, 20:23  [ТС]
Я там написал, что пробовал и убирать всё равно не работает...
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
11.05.2020, 20:40
а в data, вообще что-то есть?
смотрели в консоли?
1
 Аватар для Soldado
901 / 833 / 198
Регистрация: 28.06.2012
Сообщений: 1,607
Записей в блоге: 4
11.05.2020, 22:09
Зайдите с другой стороны. Оставьте
JavaScript
1
 dataType:'json'
приходит в json.
Уберите
JavaScript
1
data = jQuery.parseJSON(data);
Тогда дата - объект.
Проверяйте не длинну объекта, а например пришедшее имя.
JavaScript
1
 if (data.name.length > 0)
0
 Аватар для Кателевский ВН
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
12.05.2020, 10:26  [ТС]
Ставишь 'json', ничего не приходит, ставишь 'text' приходит...

Добавлено через 8 минут
Вот что прилетает в obrobotchik.php :
PHP
1
[{"id":"11","name":"новость","text":"текст новости"},{"id":"12","name":"новость","text":"текст новости"},{"id":"13","name":"новость","text":"текст новости"},{"id":"14","name":"новость","text":"текст новости"},{"id":"15","name":"новость","text":"текст новости"},{"id":"16","name":"новость","text":"текст новости"},{"id":"17","name":"Новость","text":"Текст новости"},{"id":"18","name":"Новость","text":"Текст новости"},{"id":"19","name":"Новость","text":"Текст новости"},{"id":"20","name":"Новость","text":"Текст новости"}]
и это же приходит в data, но с ошбикой(SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data), но если dataType:'text', если же dataType:'json', то data нет, точнее до done дело почему-то не доходит.
0
 Аватар для Soldado
901 / 833 / 198
Регистрация: 28.06.2012
Сообщений: 1,607
Записей в блоге: 4
12.05.2020, 10:46
Вот так работает
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(){
 
    /* Переменная-флаг для отслеживания того, происходит ли в данный момент ajax-запрос. В самом начале даем ей значение false, т.е. запрос не в процессе выполнения */
    let inProgress = false;
    /* С какой статьи надо делать выборку из базы при ajax-запросе */
   let startFrom = 10;
 
    /* Используйте вариант $('#more').click(function() для того, чтобы дать пользователю возможность управлять процессом, кликая по кнопке "Дальше" под блоком статей (см. файл index.php) */
    $(window).scroll(function() {
 
        /* Если высота окна + высота прокрутки больше или равны высоте всего документа и ajax-запрос в настоящий момент не выполняется, то запускаем ajax-запрос */
        if($(window).scrollTop() + $(window).height() >= $(document).height() && !inProgress) {
 
            $.ajax({
                url: 'obrobotchik.php',
                type: 'POST',
                dataType:'json',/*пробовал её убирать, тоже эфекта 0)*/
                data: {startFrom : startFrom},
                /* что нужно сделать до отправки запрса */
                beforeSend: function() {
 
                    /* меняем значение флага на true, т.е. запрос сейчас в процессе выполнения */
                    inProgress = true;}
                /* что нужно сделать по факту выполнения запроса */
            }).done(function(data){
                
                /* Преобразуем результат, пришедший от обработчика - преобразуем json-строку обратно в массив */
                //data = jQuery.parseJSON(data);
               
 
                /* Если массив не пуст (т.е. статьи там есть) */
                if (data.length > 0) {
 
                    /* Делаем проход по каждому результату, оказвашемуся в массиве,
                    где в index попадает индекс текущего элемента массива, а в data - сама статья */
                    $.each(data, function(index, data){
 
                        /* Отбираем по идентификатору блок со статьями и дозаполняем его новыми данными */
                        $("#newsDiv").append("<div style='border: 1px solid black;height: 100px;width: 100px;'><p>"
                            + data.name + "<br>" + data.text + "</p></div>");
                    });
 
                    /* По факту окончания запроса снова меняем значение флага на false */
                    inProgress = false;
                    // Увеличиваем на 10 порядковый номер статьи, с которой надо начинать выборку из базы
                    startFrom += 10;
                }});
        }
    });
});
obrabotchik.php
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
require_once 'function.php';
require_once 'config.php';
$startFrom = $_POST['startFrom'];
 
$sql2 = "SELECT * FROM news ORDER BY 'id' DESC LIMIT {$startFrom}, 10";
 
echo json_encode(getResult($sql2));
 
 
?>
1
 Аватар для Кателевский ВН
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
12.05.2020, 10:58  [ТС]
Ага, работает, но теперь опять проблема с тем чтобы распарсить. Она ведь и без 'json' то же работает, вот только не парсит(
0
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
12.05.2020, 11:07
смотри чтобы обработчик был сохранен в формате utf-8 без bom, можно просто отправить заголовок и тогда ничего парсить не надо, данные сразу будут в массиве data

PHP
1
2
header("Content-type: application/json; charset=utf-8");
echo json_encode(getResult($sql2));
0
 Аватар для Кателевский ВН
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
12.05.2020, 11:13  [ТС]
Да, благодарю и так тоже пробовал и нашёл возможно более изящное решение echo json_encode(getResult($sql2), JSON_UNESCAPED_UNICODE);, но это тоже не помогает...
0
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
12.05.2020, 12:07
в консоли браузера можно посмотреть что возвращает скрипт, ты смотрел? Ctrl+Shift+C вкладка Network, потом вызываешь действие обращения к скрипту и смотришь че там (это для Chrome)
0
 Аватар для Кателевский ВН
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
12.05.2020, 13:38  [ТС]
Я выше уже скидывал, что возвращает скрипт...
0
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
13.05.2020, 09:45
Лучший ответ Сообщение было отмечено Кателевский ВН как решение

Решение

у тебя ругается на первый же символ, это потому что формат файла не правильный, я уже писал, открой его в notepad++, скорее всего у тебя сохранено с БОМ, а это как раз три лишних байта в начале файла, которые мешают парсить
Миниатюры
Не парсит jQuery.parseJSON, не пойму почему  
0
 Аватар для Кателевский ВН
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
13.05.2020, 11:00  [ТС]
У двух файлов funcrion.php и config.php было с БОМ, я изменил, после этого произошло два изменения: 1.SyntaxError: JSON.parse: unexpected end of data at line 1 column 2 of the JSON data, стал выдавать не сразу при начале прокрутки, а реально внизу страницы, как и должен. 2.При указании dataType:'json' в done() начала приходить data.

Добавлено через 8 минут
Мляяяя....)))Всё заработало, я пока экспериментировал, дополнительно наделал ошибок, сейчас всё убрал и заработало)))Большое всем спасибо)))Ыыы)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2020, 11:00
Помогаю со студенческими работами здесь

Не понимаю почему не парсит
Не как не могу спарсить конкретный сайт, почему? помогите плиз $ch = curl_init(); $options = array( ...

Почему CURL не парсит ASCII ?
Добрый день, подскажите, пожалуйста, почему curl не хочет парсить код HTML страницы с кодировкой ASCII ?

Почему не парсит XPath в яндексе?
почему-то не парсятся заголовки в результатах поиска яндекса. Может из-за вложенных тегов b? &lt;div...

Почему не парсит конкретный сайт?
Учусь. Для практики сделал анализатор тайтлов. открывается файл, запускается функция, которая парсит метатеги сайтов по урлам из файла, ...

Jquery.fileupload.js не пойму как инициировать отправку файла на сервер
Добрый вечер. Мне нужно отправлять на сервер большие файлы, от 1Гб и больше. В интернете вычитал, что для этой цели может помочь...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru