|
Пользователь 1866671 Заглянувший Сообщений: 24 |
#1 0 18.01.2019 05:21:16 Есть файл с n-строк, пример. На выходе метод возвращает «ERROR_METHOD_NOT_FOUND».
В доках очень печально по этому методу. В чем может быть ошибка? |
||
|
Пользователь 4258402 Заглянувший Сообщений: 2 |
Я выяснил только что в batch можно положить массив лишь одного уровня… $batch[1] => ‘crm.product.list…’ $batch[1][1] => ‘crm.product.list…’ А вы как раз пытаетесь это сделать. Может я не прав, и Вы, спустя 1.5 года нашли решение? ) |
|
Пользователь 4258402 Заглянувший Сообщений: 2 |
#3 0 17.05.2020 10:34:51
сделал вот так вот… грубо говоря получается так, это не код, а как бы объяснение структуры массива. $batch[1] => ‘crm.product.list…’ все же быстрее в 3 раза получается, чем если каждый товар по отдельности, проверял на объеме в 50 тыс товаров. |
||||
|
Пользователь 4677649 Заглянувший Сообщений: 2 |
#4 0 01.11.2020 15:05:04
А можете подробней написать, как через batch добавить на сайт сразу например несколько товаров ? |
||
Содержание
- json error syntax error 4
- Решение
- Другие решения
- Описание
- Список параметров
- Возвращаемые значения
- Примеры
- Смотрите также
- json_decode возвращает JSON_ERROR_SYNTAX, но он-лайн форматировщик говорит, что JSON в порядке
- Решение
- Другие решения
- Bitrix: JSON error: Syntax error
- json_decode возвращает JSON_ERROR_SYNTAX, но он-лайн форматировщик говорит, что JSON в порядке
- Решение
- Другие решения
- json_last_error
- Описание
- Список параметров
- Возвращаемые значения
- Примеры
- Смотрите также
json error syntax error 4
У меня очень странная проблема.
У меня есть веб-сервис JSON.
Но когда я загружаю свой JSON с этим кодом:
Я получил ошибку: SYNTAX ERROR
ЧТО НЕ ПОМОГАЕТ ПОЛНОЙ ВСЕ.
(но мне пока не удалось установить PHP 5.5, и я не уверен, что эта функция даст мне больше деталей)
Решение
Я столкнулся с той же проблемой, на самом деле есть некоторые скрытые символы, невидимые, и вам нужно удалить его.
Вот глобальный код, который работает во многих случаях:
Другие решения
Удаление BOM (Byte Order Mark) часто является решением, которое вам нужно:
У вас не должно быть спецификации, но если она есть, она невидима, поэтому вы ее не увидите !!
использование BOM Cleaner если у вас есть много файлов, чтобы исправить.
Я решил эту проблему, добавив stripslashes в строку, перед json_decode.
Чтобы собрать все вместе, я подготовил JSON-оболочку с расшифровкой автокорректирующих действий. Самую последнюю версию можно найти в моем GitHub Gist .
Вы не показывали свой JSON, но это похоже на то, что это может быть неверная последовательность UTF-8 в аргументе, большинство онлайн-валидаторов не поймают его.
убедитесь, что ваши данные UTF-8, а также проверьте, есть ли у вас иностранные символы.
Вам не нужен PHP5, чтобы увидеть вашу ошибку, используйте журнал ошибок() регистрировать проблемы.
Попробовав все решение без результата, это сработало для меня.
Надеюсь, это поможет кому-то
У меня была такая же проблема. Для меня это было вызвано echo »
В начале файла я объявил тег разрыва строки … Так что это была ошибка для меня. Удалив этот тег разрыва строки, я смог […]
(PHP 5 >= 5.3.0, PHP 7)
json_last_error — Возвращает последнюю ошибку
Описание
Возвращает последнюю ошибку (если она есть), произошедшую во время последнего кодирования/декодирования JSON если при вызове не использовался флаг JSON_THROW_ON_ERROR .
Список параметров
У этой функции нет параметров.
Возвращаемые значения
Возвращает целочисленное значение, которое может быть одной из следующих констант:
Коды ошибок JSON
| Константа | Значение | Доступность |
|---|---|---|
| JSON_ERROR_NONE | Ошибок нет | |
| JSON_ERROR_DEPTH | Достигнута максимальная глубина стека | |
| JSON_ERROR_STATE_MISMATCH | Неверный или некорректный JSON | |
| JSON_ERROR_CTRL_CHAR | Ошибка управляющего символа, возможно неверная кодировка | |
| JSON_ERROR_SYNTAX | Синтаксическая ошибка | |
| JSON_ERROR_UTF8 | Некорректные символы UTF-8, возможно неверная кодировка | PHP 5.3.3 |
| JSON_ERROR_RECURSION | Одна или несколько зацикленных ссылок в кодируемом значении | PHP 5.5.0 |
| JSON_ERROR_INF_OR_NAN | Одно или несколько значений NAN или INF в кодируемом значении | PHP 5.5.0 |
| JSON_ERROR_UNSUPPORTED_TYPE | Передано значение с неподдерживаемым типом | PHP 5.5.0 |
| JSON_ERROR_INVALID_PROPERTY_NAME | Имя свойства не может быть закодировано | PHP 7.0.0 |
| JSON_ERROR_UTF16 | Некорректный символ UTF-16, возможно некорректно закодирован | PHP 7.0.0 |
Примеры
Пример #1 Пример использования json_last_error()
// Неверная json-строка, которая вызовет синтаксическую ошибку,
// здесь в качестве кавычек мы используем ‘ вместо »
$json [] = « » ;
foreach ( $json as $string )
Результат выполнения данного примера:
Пример #2 Совместное использование json_last_error() и json_encode()
// Некорректная последовательность UTF8
$text = «xB1x31» ;
$json = json_encode ( $text );
$error = json_last_error ();
var_dump ( $json , $error === JSON_ERROR_UTF8 );
?>
Результат выполнения данного примера:
Пример #3 json_last_error() и JSON_THROW_ON_ERROR
// Некорректная последовательность UTF8, вызывающая JSON_ERROR_UTF8
json_encode ( «xB1x31» );
// Не вызовет ошибки JSON
json_encode ( ‘okay’ , JSON_THROW_ON_ERROR );
// Глобальное состояние не будет изменено json_encode()
var_dump ( json_last_error () === JSON_ERROR_UTF8 );
?>
Результат выполнения данного примера:
Смотрите также
- json_last_error_msg() — Возвращает строку с сообщением об ошибке последнего вызова json_encode() или json_decode()
- json_decode() — Декодирует строку JSON
- json_encode() — Возвращает JSON-представление данных
I had previously asked the same question. I would like to decode the json from: http://pad.skyozora.com/data/pets.json. Below is the code I used previously:
From the last answer I know there is UTF8 DOM in the json return. I tried the answer from a similar question: json_decode returns NULL after webservice call, but all of the answers not work for me.
And after do more research I found a way that works:
This successfully decode the json into array. However all Chinese and Japanese character string were removed too. Any ideas?
Edited:
and give me the error:
But I couldn’t see any problem with this part of json.
Источник
json_decode возвращает JSON_ERROR_SYNTAX, но он-лайн форматировщик говорит, что JSON в порядке
У меня очень странная проблема.
У меня есть веб-сервис JSON.
Но когда я загружаю свой JSON с этим кодом:
Я получил ошибку: SYNTAX ERROR
ЧТО НЕ ПОМОГАЕТ ПОЛНОЙ ВСЕ.
(но мне пока не удалось установить PHP 5.5, и я не уверен, что эта функция даст мне больше деталей)
Решение
Я столкнулся с той же проблемой, на самом деле есть некоторые скрытые символы, невидимые, и вам нужно удалить его.
Вот глобальный код, который работает во многих случаях:
Другие решения
Удаление BOM (Byte Order Mark) часто является решением, которое вам нужно:
У вас не должно быть спецификации, но если она есть, она невидима, поэтому вы ее не увидите !!
использование BOM Cleaner если у вас есть много файлов, чтобы исправить.
Я решил эту проблему, добавив stripslashes в строку, перед json_decode.
Чтобы собрать все вместе, я подготовил JSON-оболочку с расшифровкой автокорректирующих действий. Самую последнюю версию можно найти в моем GitHub Gist .
Вы не показывали свой JSON, но это похоже на то, что это может быть неверная последовательность UTF-8 в аргументе, большинство онлайн-валидаторов не поймают его.
убедитесь, что ваши данные UTF-8, а также проверьте, есть ли у вас иностранные символы.
Вам не нужен PHP5, чтобы увидеть вашу ошибку, используйте журнал ошибок() регистрировать проблемы.
Попробовав все решение без результата, это сработало для меня.
Надеюсь, это поможет кому-то
У меня была такая же проблема. Для меня это было вызвано echo »
В начале файла я объявил тег разрыва строки … Так что это была ошибка для меня. Удалив этот тег разрыва строки, я смог […]
Источник
Bitrix: JSON error: Syntax error
При настройке сайта, пункт «Рабочий стол — Маркетинг — Поисковая оптимизация — Поисковые системы — Яндекс» при попытке авторизоваться через Яндекс и вводе полученного от Яндекс кода подтверждения получаю «Не удалось получить авторизацию: JSON error: Syntax error [4]». Причем данная ошибка видна только в Mozilla Firefox, в других браузерах просто не происходит авторизации. Битрикс установлен в виртуальной машине от разработчика (Bitrix virtual appliance version 7.4.3).
Обратился в ТП битрикса, неделю переписывался, попросили доступы не только в админку сайта но и доступы к аккаунту Яндекса (зачем?). После недельной переписки с ТП выяснилось, что есть проблема с подключением к сайту именно Яндекса.
Проверить проблему подключения к «oauth.yandex.ru» можно кодом:
$res = stream_socket_client(«ssl://oauth.yandex.ru:443», $errno, $errstr, 5);
var_dump($res);
И проблема была из-за того, что виртуалка была создана на CentOS 6.10, в которой для корректной работы с сервисами Яндекса необходимо принудительно обновить CA.
Делается следующим образом:
На всякий случай скопировали текущие CA (могут быть по другому пути):
cp /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem tls-ca-bundle.pem
Скачали новые и обновили CA.
curl https://www.certum.pl/CA.pem > /etc/pki/ca-trust/source/anchors/certum_pl_CA.pem
update-ca-trust extract
После этого вышеприведенный код перестал выдавать ошибку при подключении к сайту Яндекса.
Источник
json_decode возвращает JSON_ERROR_SYNTAX, но он-лайн форматировщик говорит, что JSON в порядке
У меня очень странная проблема.
У меня есть веб-сервис JSON.
Но когда я загружаю свой JSON с этим кодом:
Я получил ошибку: SYNTAX ERROR
ЧТО НЕ ПОМОГАЕТ ПОЛНОЙ ВСЕ.
(но мне пока не удалось установить PHP 5.5, и я не уверен, что эта функция даст мне больше деталей)
Решение
Я столкнулся с той же проблемой, на самом деле есть некоторые скрытые символы, невидимые, и вам нужно удалить его.
Вот глобальный код, который работает во многих случаях:
Другие решения
Удаление BOM (Byte Order Mark) часто является решением, которое вам нужно:
У вас не должно быть спецификации, но если она есть, она невидима, поэтому вы ее не увидите !!
использование BOM Cleaner если у вас есть много файлов, чтобы исправить.
Я решил эту проблему, добавив stripslashes в строку, перед json_decode.
Чтобы собрать все вместе, я подготовил JSON-оболочку с расшифровкой автокорректирующих действий. Самую последнюю версию можно найти в моем GitHub Gist .
Вы не показывали свой JSON, но это похоже на то, что это может быть неверная последовательность UTF-8 в аргументе, большинство онлайн-валидаторов не поймают его.
убедитесь, что ваши данные UTF-8, а также проверьте, есть ли у вас иностранные символы.
Вам не нужен PHP5, чтобы увидеть вашу ошибку, используйте журнал ошибок() регистрировать проблемы.
Попробовав все решение без результата, это сработало для меня.
Надеюсь, это поможет кому-то
У меня была такая же проблема. Для меня это было вызвано echo »
В начале файла я объявил тег разрыва строки … Так что это была ошибка для меня. Удалив этот тег разрыва строки, я смог […]
Источник
json_last_error
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
json_last_error — Возвращает последнюю ошибку
Описание
Возвращает последнюю ошибку (если она есть), произошедшую во время последнего кодирования/декодирования JSON если при вызове не использовался флаг JSON_THROW_ON_ERROR .
Список параметров
У этой функции нет параметров.
Возвращаемые значения
Возвращает целочисленное значение, которое может быть одной из следующих констант:
Коды ошибок JSON
| Константа | Значение | Доступность |
|---|---|---|
| JSON_ERROR_NONE | Ошибок нет | |
| JSON_ERROR_DEPTH | Достигнута максимальная глубина стека | |
| JSON_ERROR_STATE_MISMATCH | Неверный или некорректный JSON | |
| JSON_ERROR_CTRL_CHAR | Ошибка управляющего символа, возможно неверная кодировка | |
| JSON_ERROR_SYNTAX | Синтаксическая ошибка | |
| JSON_ERROR_UTF8 | Некорректные символы UTF-8, возможно неверная кодировка | |
| JSON_ERROR_RECURSION | Одна или несколько зацикленных ссылок в кодируемом значении | |
| JSON_ERROR_INF_OR_NAN | Одно или несколько значений NAN или INF в кодируемом значении | |
| JSON_ERROR_UNSUPPORTED_TYPE | Передано значение с неподдерживаемым типом | |
| JSON_ERROR_INVALID_PROPERTY_NAME | Имя свойства не может быть закодировано | |
| JSON_ERROR_UTF16 | Некорректный символ UTF-16, возможно некорректно закодирован |
Примеры
Пример #1 Пример использования json_last_error()
// Неверная json-строка, которая вызовет синтаксическую ошибку,
// здесь в качестве кавычек мы используем ‘ вместо »
$json [] = «<‘Organization’: ‘PHP Documentation Team’>» ;
foreach ( $json as $string ) <
echo ‘Декодируем: ‘ . $string ;
json_decode ( $string );
switch ( json_last_error ()) <
case JSON_ERROR_NONE :
echo ‘ — Ошибок нет’ ;
break;
case JSON_ERROR_DEPTH :
echo ‘ — Достигнута максимальная глубина стека’ ;
break;
case JSON_ERROR_STATE_MISMATCH :
echo ‘ — Некорректные разряды или несоответствие режимов’ ;
break;
case JSON_ERROR_CTRL_CHAR :
echo ‘ — Некорректный управляющий символ’ ;
break;
case JSON_ERROR_SYNTAX :
echo ‘ — Синтаксическая ошибка, некорректный JSON’ ;
break;
case JSON_ERROR_UTF8 :
echo ‘ — Некорректные символы UTF-8, возможно неверно закодирован’ ;
break;
default:
echo ‘ — Неизвестная ошибка’ ;
break;
>
Результат выполнения данного примера:
Пример #2 Совместное использование json_last_error() и json_encode()
// Некорректная последовательность UTF8
$text = «xB1x31» ;
$json = json_encode ( $text );
$error = json_last_error ();
var_dump ( $json , $error === JSON_ERROR_UTF8 );
?>
Результат выполнения данного примера:
Пример #3 json_last_error() и JSON_THROW_ON_ERROR
// Некорректная последовательность UTF8, вызывающая JSON_ERROR_UTF8
json_encode ( «xB1x31» );
// Не вызовет ошибки JSON
json_encode ( ‘okay’ , JSON_THROW_ON_ERROR );
// Глобальное состояние не будет изменено json_encode()
var_dump ( json_last_error () === JSON_ERROR_UTF8 );
?>
Результат выполнения данного примера:
Смотрите также
- json_last_error_msg() — Возвращает строку с сообщением об ошибке последнего вызова json_encode() или json_decode()
- json_decode() — Декодирует строку JSON
- json_encode() — Возвращает JSON-представление данных
Источник
Перейти к контенту
При настройке сайта, пункт «Рабочий стол — Маркетинг — Поисковая оптимизация — Поисковые системы — Яндекс» при попытке авторизоваться через Яндекс и вводе полученного от Яндекс кода подтверждения получаю «Не удалось получить авторизацию: JSON error: Syntax error [4]». Причем данная ошибка видна только в Mozilla Firefox, в других браузерах просто не происходит авторизации. Битрикс установлен в виртуальной машине от разработчика (Bitrix virtual appliance version 7.4.3).
Обратился в ТП битрикса, неделю переписывался, попросили доступы не только в админку сайта но и доступы к аккаунту Яндекса (зачем?). После недельной переписки с ТП выяснилось, что есть проблема с подключением к сайту именно Яндекса.
Проверить проблему подключения к «oauth.yandex.ru» можно кодом:
$res = stream_socket_client(«ssl://oauth.yandex.ru:443», $errno, $errstr, 5);
var_dump($res);
И проблема была из-за того, что виртуалка была создана на CentOS 6.10, в которой для корректной работы с сервисами Яндекса необходимо принудительно обновить CA.
Делается следующим образом:
update-ca-trust enable
На всякий случай скопировали текущие CA (могут быть по другому пути):
cp /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem tls-ca-bundle.pem
Скачали новые и обновили CA.
curl https://www.certum.pl/CA.pem > /etc/pki/ca-trust/source/anchors/certum_pl_CA.pem
update-ca-trust extract
После этого вышеприведенный код перестал выдавать ошибку при подключении к сайту Яндекса.
|
Jasta 975 / 498 / 101 Регистрация: 20.02.2016 Сообщений: 2,843 |
||||
|
1 |
||||
|
30.09.2021, 17:44. Показов 1868. Ответов 2 Метки нет (Все метки)
Доброго всем времени суток! После обновления Битрикса до версии 21.400.300 при отправке ajax запроса получаю ошибку json_failure. Для отправки запроса используется метод BX.ajax.runComponentAction:
Подскажите в чём может быть дело?!??
0 |
|
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
30.09.2021, 17:44 |
|
2 |
|
1652 / 1074 / 219 Регистрация: 16.03.2008 Сообщений: 5,061 Записей в блоге: 2 |
|
|
30.09.2021, 20:46 |
2 |
|
РешениеТак посмотрите в инструментах разработчика браузера что возвращается на запрос. Наверняка, если в .settings.php включите режим отладки — ошибка какая то выскочит. Если компонент citfact:lk.company_page на поддержке — может есть смысл обратиться к разработчику. 100% дело в этом компоненте
0 |
|
975 / 498 / 101 Регистрация: 20.02.2016 Сообщений: 2,843 |
|
|
01.10.2021, 16:24 [ТС] |
3 |
|
100% дело в этом компоненте Да Вы были правы. Стал ковырять компонент и оказалось что дауны которые разрабатывали этот сайт до меня, отдавали с бека компонент целиком, чтобы потом перерисовать его через JS, но уже с крохотным сообщением об успехе. Удалил всю эту дичь и переписал по человечески. Спасибо за помощь))
0 |
При установке виртуальной машины Битрикс в качестве Push-and-Pull сервера по умолчанию используется модуль Nginx под названием Nginx-PushStreamModule. Этот подход считается устаревшим, поэтому в консоли Bitrix env есть возможность заменить его на NodeJS RTC service. Казалось бы нет ничего проще выбрать в консоли пункт 10 (Configure Push/RTC service), затем пункт 1 (Install/Update NodeJS RTC Service), дождаться выполнения фонового задания и начать пользоваться современным инструментом. Но к сожалению в некоторых случаях все проходит не так гладко. Когда я стал проводить описанные действия – выполнение команд завершилось ошибкой, а я получил неработающий портал клиента. Версия виртуальной машины, где произошла эта ошибка была 7.0.3.

Причем «откатить» изменения через консоль не удалось, так как NodeJS RTC service не установился. Оказалось, что ключевая причина в том, что перестал запускаться Nginx. При попытке его запустить выдавалась следующая ошибка: nginx: [emerg] host not found in upstream “server1:8010”.

Первым делом я, конечно, написал обращение в техподдержку Битрикса, в то же время стал искать решение проблемы самостоятельно. Потому что ответ приходится ждать довольно долго, а «оживить» портал хотелось побыстрее.
Поиск решения занял несколько часов, причем мне в первую очередь нужно было вернуть «все как было», а не искать причину ошибки.
Сначала я открыл главный файл конфигурации nginx (/etc/nginx/ nginx.conf). Дата его изменения была давнишняя, поэтому я решил, что причина неисправности не в нем. В этом файле есть подключение других конфигурационных файлов из папок /etc/nginx/bx/conf/, /etc/nginx/bx/settings/, а также /etc/nginx/bx/site_enabled/.
Зайдя в эти папки, я обнаружил, что в них есть файлы со «свежей» датой создания. Открыв параллельно соответствующие папки другой ВМ, где NodeJS RTC service не установлен, я обнаружил, что таких файлов там нет. Значит их можно и нужно удалить.
Сначала удаляем следующие файлы:
- /etc/nginx/bx/settings/rtc-im_settings.conf
- /etc/nginx/bx/site_enabled/rtc-server.conf
Далее удаляем файл:
- /etc/nginx/bx/conf/rtc-im_subscrider.conf
НО на него в этой папке есть символическая ссылка. Ее тоже нужно удалить и создать снова, но указывать она должна уже на другой файл: push-im_subscrider.conf
Делается это командой
# ln –s /etc/nginx/bx/conf/im_subscrider.conf /etc/nginx/bx/conf/push-im_subscrider.conf
После выполнения этих действий, снова пытаемся запустить Nginx.
# service nginx restart или
# systemctl restart nginx.service
В моем случае он запустился без проблем и портал снова заработал.
Кстати, техподдержка Битрикса посоветовала переустановить виртуальную машину полностью, что меня совсем не устраивало.
Затем я обновил BitrixEnv до 7.3.4 и попробовал выполнить установку NodeJS RTC service снова. Обновление не помогло. Ситуация повторилась снова. Пришлось повторить все описанные выше действия еще раз.
Надеюсь, что когда вы будете читать эту статью, подобных проблем при настройке Push-and-Pull сервера в виртуальной машине Битрикс возникать не будет.
Сообщение было отмечено Jasta как решение
