Я не понимаю, почему у меня есть ошибка разбора. Кто-то может мне помочь?
клиент
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: ","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());
}
Знаю что есть лишний код, что не грамотно написано…
Что нужно поменять? Уже по всякому пробовал…((( Имейте ввиду что я начинающий программист ;). Заранее спасибо.