Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Проблемы с JSON как исправить?

Проблемы с JSON как исправить?


     08.06.2016    jQuery, Ламерские вопросы    6107

вопрос
Всем привет, весь день парюсь с JSON, работать не хочет

Принимаю/отправляю код через Jquery

$.post('engine/classes/parse.php', { parse: val() }, function(data){
var json = $.parseJSON(data);
//var json = eval('(' + data + ')');
console.log(json);
$('#tst0').val(json.tst0);
$('#tst1').html(json.tst1);
$('#tst3').val(json.tst3);
$('#tst4').html(json.tst4);
$('#tst5').val(json.tst5);
$('#tst6').html(json.tst6);
});



После проверки данных $_POST['parse'] вывожу так

$buffer = array('tst0' => $tst0, 'tst1' => $tst1, 'tst3' => $tst2, 'tst4' => $tst3, 'tst5' => $tst4, 'tst6' => $tst5);
echo json_encode($buffer);

JSON строка выводиться так

{"tst0":7.43,"tst1":320,"tst3":"3:14","tst4":"test site","tst5":"http:\/\/site.ru\/uploads\/posts\/1465386456-randomnamea
.jpg","tst6":"jpg"}


Выходит ошибка Uncaught SyntaxError: Unexpected token  in JSON at position 0, делаю через eval весь код начинает работать нормально, не подскажите как решить проблему?

Ответа пока нет


14 комментариев

lutskboy
Эксперт

lutskboy - 8 июня 2016 15:28 -


$.post('engine/classes/parse.php', { parse: val() }, function(data){
$('#tst0').val(data.tst0);
$('#tst1').html(data.tst1);
$('#tst3').val(data.tst3);
$('#tst4').html(data.tst4);
$('#tst5').val(data.tst5);
$('#tst6').html(data.tst6);
},"json");

Gordo
Юзер

Gordo - 8 июня 2016 15:39 -

не работает( в консоле даже не выводит ошибку или ответ, json убрал в конце, данные пришли, но код не рабочий

nowheremany
Эксперт

nowheremany - 8 июня 2016 15:33 -

Попробуйте сконвертить в UTF $buffer

Благодарность принимаю тут Связь

Gordo
Юзер

Gordo - 8 июня 2016 15:53 -

не помогло(

nowheremany
Эксперт

nowheremany - 8 июня 2016 16:09 -

У меня так работает
@header( "Content-type: text/html; charset=" . $config['charset'] );
die(iconv("windows-1251","UTF-8", json_encode($result)));


в JS -
$.parseJSON(data)

Благодарность принимаю тут Связь

Gordo
Юзер

Gordo - 8 июня 2016 16:47 -

скопировал ваш код, так же не работает, незнаю где кривыми руками прошелся, в debug'e показывает всю json строку и почему то указывает ошибку на закрывающие скобки.

Firefox вообще пишет что ошибка в jquery

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

ПафНутиЙ
Админ

ПафНутиЙ - 8 июня 2016 21:51 -

Сайт в UTF-8?

Каков вопрос - таков и ответ. Просто помните об этом.

Gordo
Юзер

Gordo - 8 июня 2016 22:06 -

да в utf-8, самое непонятное когда даже уже готовую json строку в php вставляю с любым значением, ошибка вылезает постоянно, вставляю эту же строку в js код работает без нареканий

ПафНутиЙ
Админ

ПафНутиЙ - 8 июня 2016 22:19 -

Ответ от сервера в json формате?
header('Content-Type: application/json');

Каков вопрос - таков и ответ. Просто помните об этом.

Gordo
Юзер

Gordo - 8 июня 2016 22:26 -

выводился не json, а вроде url encoded точно не помню, когда принудительно через ajax передавал content-type выходила другая ошибка, либо вовсе код не хотел выводиться и вылезали одни ошибки, но все же попробую еще раз, eval'ом выводить как то не хочется

ПафНутиЙ
Админ

ПафНутиЙ - 8 июня 2016 22:27 -

давайте адрес сайта.

Каков вопрос - таков и ответ. Просто помните об этом.

Gordo
Юзер

Gordo - 8 июня 2016 22:35 -

делаю на локалке(

ПафНутиЙ
Админ

ПафНутиЙ - 8 июня 2016 22:23 -

Ну и ещё можно использовать более удобную конструкцию для получения данных в json
$.ajax({
    url: dle_root . '/engine/classes/parse.php',
    type: 'post',
    dataType: 'json',
    data: {parse: val},
})
.done(function(data) {
    console.log(data);
})
.fail(function() {
    console.error('error');
})
.always(function() {
    console.info('complete');
});

Каков вопрос - таков и ответ. Просто помните об этом.

Gordo
Юзер

Gordo - 8 июня 2016 22:54 -

Скриншот. Вывод ошибки без content type json
Скриншот. Вывод ошибки без content type json 2
Ответ возвращается с непонятными ошибками

Скриншот с content-type json
Когда выставил content type json, ответ вернулся с ошибкой

Если нужно могу вам код предоставить js и php

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

 19.09.2013 DaeWoo  jQuery
наверх