2013-12-23 4 views
1

Я провел последние несколько дней, пытаясь обойти эту проблему. Каждый раз, когда я пытаюсь получить объект JSON с использованием $ http.get в Angular, я получаю сообщение «Ошибка: JSON.parse: неожиданный символ».Получение «Ошибка: JSON.parse: неожиданный символ» при получении JSON с AngularJS

My JSON создан с использованием json_encode PHP. Код PHP заключается в следующем:

header('Content-Type:application/json'); 
echo json_encode($to_encode); 

JSON он создает, выглядит так:

{"id":"1","para":{"para_id":"1","story_id":"1","para_content":""\u017bagiel na horyzoncie!" - s\u0142ycha\u0107 krzyk z bocianiego gniazda. Fregata Jego Kr\u00f3lewskiej Mo\u015bci "Acanta" \u017cwawo sunie przez b\u0142\u0119kit oceanu. Ty, jej dow\u00f3dca, stoisz na rufie. Bosman i sternik patrz\u0105 si\u0119 na ciebie, oczekuj\u0105c rozkaz\u00f3w."},"tunnels":[{"tunnel_id":"1","start_para_id":"1","end_para_id":"2","tunnel_content":"Spokojnie, zbli\u017cmy si\u0119 i sprawd\u017amy, kto to."},{"tunnel_id":"2","start_para_id":"1","end_para_id":"3","tunnel_content":"Bi\u0107 na alarm! Za\u0142oga do dzia\u0142!"}]} 

(это UTF8 кодировке польски, если это уместно; текст просто заполнитель)

JS, который получает это выглядит следующим образом:

$scope.current_para = $http.get("/gamebook/run"); 
$scope.current_para.then(function(os){result = os.data; console.log(result);} 

Вместо аккуратной JSON в моем console.log, я получаю ERRO r, хотя мой Firebug говорит мне, что метод GET был успешным и даже показал мне JSON, который он получил.

+0

Работает ли он без частей польского языка? Я знаю, что это не решит вашу проблему, но будет хорошо знать, является ли это одним из тех польских символов, вызывающих проблему. – naththedeveloper

+0

http://stackoverflow.com/questions/17976476/latin1-utf-8-encoding-problems- in-angularjs Возможно, что это будет? Просто догадка. –

+0

Если он закодирован в UTF-8, то почему он включает экранированные коды Unicode? – superEb

ответ

1

Я, наконец, нашел обходное решение этих проблем - я до сих пор не знаю, что и почему произошло, но вот что можно сделать.

На стороне сервера вы должны обернуть данные JSON в одинарные кавычки (что делает его строкой), а затем использовать eval() в JS, чтобы вернуть его в JSON.

Я знаю, что это не изящно, но это единственное решение, которое я нашел. Надеюсь, это поможет кому-то.

Спасибо всем за вход!

Смежные вопросы