Ошибка разбора json ответа тэк торг

Я не понимаю, почему у меня есть ошибка разбора. Кто-то может мне помочь?

клиент

function test() {
        $.ajax({
            type: 'POST',
            url: 'index.php?action=setpawn',
            contentType: "application/json; charset=utf-8",
            async: false,
            success: function(data) {
                alert(data.updated);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert(errorThrown + textStatus);
            }
        });
}

Сервер (PHP)

header('Content-type: application/json; charset=utf-8');
$response['updated'] = true;
json_encode($response);

2014-06-04 14:04

2
ответа

Мне кажется, что ошибка не является ошибкой разбора, но результат не выводится….

Вы можете попробовать это?

<?php
header('Content-type: application/json; charset=utf-8');
$response['updated'] = true;
echo json_encode($response);

2014-06-04 14:07

Вы забыли отправить свой JSON. Вместо

json_encode($response);

тебе нужно

echo json_encode($response);

2014-06-04 14:08

Медицинский монитор это монитор, который отвечает высоким требованиям к медицинской визуализации в радиологии и маммографии. Он используется рентгенологами для просмотра диагностических изображений, таких как рентгеновские снимки, данные магнитно-резонансных исследований и компьютерной томографии и многое другое. Диагностические дисплеи поставляются со специальными средствами и технологиями, которые помогают рентгенологам быстро и точно поставить диагноз.

Отзывов: 0

Средняя оценка: 0

Доставка заказов осуществляется в любые регионы Российской Федерации и страны СНГ.

Цены на нашем сайте указаны с учетом НДС (20% либо 10%).

Оплата заказов производится только в безналичной форме на расчетный счет в рублях Российской Федерации на основании выставленного Счета.

Для бюджетных организаций и государственных структур предусмотрены особые условия оплаты.

Постоянным клиентам предоставляются скидки и индивидуальный порядок расчетов.

Внимание! В связи с нестабильным курсом валют и изменением цен у производителей, просим окончательную стоимость продукции уточнять у наших менеджеров.

Варианты доставки:

Самовывоз со склада в городе Клин

Адрес выдачи: Московская область, г. Клин, ул. Захватаева, д. 4, офис 101

Контактный телефон: +7 (977) 407-05-96

Доставка по Клину и Клинскому району – бесплатно

Доставка по Москве – 1 500 рублей

Доставка любыми транспортными компаниями, службами экспресс-доставки. Стоимость рассчитывается индивидуально для каждого заказа в соответствии с установленными тарифами транспортной компании. Все грузы застрахованы.

0 Пользователей и 1 Гость просматривают эту тему.

  • 3 Ответов
  • 3208 Просмотров

При нажатии на «Сохранить» после редактирования модуля пишет «Модуль успешно сохранен», но через примерно 10-20 секунд выдается ошибка на той же странице:

 Ошибка
При обработке следующих JSON-данных произошла ошибка разбора:

Далее идет огромный текст ошибки в котором встречаются следующие строки:

<script>
(function() {
Joomla.JText.load({"JLIB_FORM_FIELD_INVALID":"\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043f\u043e\u043b\u0435:&#160;","ERROR":"\u041e\u0448\u0438\u0431\u043a\u0430","WARNING":"\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435","NOTICE":"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435","MESSAGE":"\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435","JLIB_JS_AJAX_ERROR_CONNECTION_ABORT":"\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 JSON.","JLIB_JS_AJAX_ERROR_NO_CONTENT":"\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u043e.","JLIB_JS_AJAX_ERROR_OTHER":"\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 JSON: \u043a\u043e\u0434 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f HTTP %s.","JLIB_JS_AJAX_ERROR_PARSE":"\u041f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 JSON-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0440\u0430\u0437\u0431\u043e\u0440\u0430: <br\/> <code style=\"color:inherit;white-space:pre;padding:0;margin:0;border:0;background:inherit;\">%s<\/code>","JLIB_JS_AJAX_ERROR_TIMEOUT":"\u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0442\u0430 \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 JSON."});
})();
</script>

А также админка немного притормаживает после открытия любого модуля и дает внести изменения только спустя несколько секунд.

В чем может быть причина? Прошу помочь! Все уже перепробовала, следуя советам форума.

Версия 3.6.5,  Шаблон админки «isis — Default», но в «Менеджер расширений: Проверка базы данных» стоит почему-то вот что:
Версия схемы базы данных (из #__schemas): 3.6.3-2016-08-16.
Версия обновления (из #__extensions): 3.6.5.

При смене шаблона админки на «Hathor — Default» ошибка при сохранении модуля не появляется. Но этот шаблон мне не нравится. Как решить проблему в шаблоне «isis — Default»?

« Последнее редактирование: 18.12.2016, 03:53:30 от globus812 »

Записан

вот такое гуглится. делайте бакап базы и пробуйте
https://github.com/robwent/joomla-json-db-check

Спасибо! Это тоже делала. Но не помогло. Хотя сложно судить, поскольку это тоже может сыграло свою роль.

В итоге помогла установка новой версии плагина Sourcerer v4.4.7 до Sourcerer v6.3.7. После этого по предложению системы деинсталировала ненужный оставшийся от старой версии плагин.

Спасибо всем за помощь!

Я не могу точно сказать, в чем проблема. Может быть, плохой символ, может быть, пробелы, которые вы оставили в начале и в конце, без понятия.

В любом случае, вы не должны жестко кодировать ваш JSON в виде строк, как вы сделали. Вместо этого правильным способом отправки JSON данных на сервер является использование JSON сериализатора:

Теперь на сервере также убедитесь, что у вас есть соответствующая модель представления, ожидающая получить этот ввод:

и соответствующее действие:

Теперь еще один момент. Вы указали dataType: 'json'. Это означает, что вы ожидаете, что сервер вернет результат в формате JSON. Действие контроллера должно возвращать JSON. Если действие вашего контроллера возвращает представление, это может объяснить ошибку, которую вы получаете. Это происходит, когда jQuery пытается разобрать ответ от сервера:

Учитывая вышесказанное, в большинстве случаев вам не нужно устанавливать свойство dataType при выполнении AJAX запроса к действию контроллера ASP.NET MVC. Причина в том, что когда вы возвращаете определенный ActionResult (например, ViewResult или JsonResult), фреймворк автоматически устанавливает правильный HTTP-заголовок ответа Content-Type. jQuery затем использует этот заголовок для разбора ответа и передает его в качестве параметра в уже разобранный обратный вызов success.

Я подозреваю, что проблема, с которой вы столкнулись, заключается в том, что ваш сервер не вернул правильный JSON. Он либо вернул какой-то ViewResult или PartialViewResult, либо вы пытались вручную сформировать неполный JSON в действии контроллера (что, очевидно, никогда не следует делать, а вместо этого использовать JsonResult).

Еще одна вещь, которую я только что заметил:

Пожалуйста, избегайте установки этого атрибута на false. Если вы установите этот атрибут в false, вы заморозите браузер клиента на все время выполнения запроса. В этом случае вы можете просто сделать обычный запрос. Если вы хотите использовать AJAX, начните думать в терминах асинхронных событий и обратных вызовов.

Есть необходимость изменить содержание кода php при котором меняется JSON-ответ. Вроде и разница всего-то в КАВЫЧКАХ, а выводит ошибку.
Код PHP при котором получается выводить успешно:

<?php // серверная часть вывода json

$login = $_POST['login'];
$pass = $_POST['pass'];
if($login == "user" & $pass == "pass") {
?>      {
"data":[

{
"name":"Lobs",
"reit":"110",
"balance":"99"
}
]
}<?php }
?>

Код PHP при котором появляется ошибка —

Error parsing data org.json.JSONException: Value
{«balance»:99,»reit»:110,»name»:»Lobs»} at data of type
org.json.JSONObject cannot be converted to JSONArray:

<?php // серверная часть вывода json

$login = $_POST['login'];
$pass = $_POST['pass'];
if($login == "user" & $pass == "pass") {
?>      {
"data":[

{
"name":"Lobs",
"reit":110,
"balance":99
}
]
}<?php }
?>

Как пробую выводить:

public void JSONURL(String result) {
    textView20 = (TextView) findViewById(R.id.textView20);
    textView34 = (TextView) findViewById(R.id.textView34);
    textView60 = (TextView) findViewById(R.id.textView60);
    try {
        //создали читателя json объектов и отдали ему строку - result
        JSONObject json = new JSONObject(result);
        //дальше находим вход в наш json им является ключевое слово data
        JSONArray urls = json.getJSONArray("data");
        //проходим циклом по всем нашим параметрам
        for (int i = 0; i < urls.length(); i++) {
            HashMap<String, Object> hm;
            hm = new HashMap<String, Object>();
            //читаем что в себе хранит параметр balance
            hm.put(NAME, urls.getJSONObject(i).getString("name").toString());
            //читаем что в себе хранит параметр reit
            hm.put(REIT, urls.getJSONObject(i).getString("reit").toString());
            //читаем что в себе хранит параметр balance
            hm.put(BALANCE, urls.getJSONObject(i).getString("balance").toString());
            myBooks.add(hm);


            //выводим
            textView20.setText((CharSequence) hm.get("name"));
            textView34.setText((CharSequence) hm.get("reit"));
            textView60.setText((CharSequence) hm.get("balance"));

        }
    } catch (JSONException e) {
        Log.e("log_tag", "Error parsing data " + e.toString());
    }

Знаю что есть лишний код, что не грамотно написано…
Что нужно поменять? Уже по всякому пробовал…((( Имейте ввиду что я начинающий программист ;). Заранее спасибо.

Понравилась статья? Поделить с друзьями:
  • Ошибка разбора json ответа error while parsing text
  • Ошибка р3400 на хонде пилот
  • Ошибка разблокировки nox app player
  • Ошибка разбора css валидатор
  • Ошибка разбор слова под цифрой 2