Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 21.03.2009, 14:18
Аватар для dmitlantis
Интересующийся
Отправить личное сообщение для dmitlantis Посмотреть профиль Найти все сообщения от dmitlantis
 
Регистрация: 21.03.2009
Сообщений: 10

Попробовал JSON
header('Content-Type: text/plain; charset=windows-1251');
$response = array("formdata"=>"Русский");
	echo json_encode($response);


respobj = eval('('+xmlhttp.responseText+')');
			alert(respobj.formdata)

Во всех браузерах Выводит пустое свойство, проверил полный текст респонса
Код:
{"formdata":null}
- на сервере
Код:
{"formdata": ""}
- на локальном сервере
Что это может означать? Проблема кодировки страницы?
Ответить с цитированием
  #12 (permalink)  
Старый 21.03.2009, 15:44
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

вы знаете.
я не сам особо не использовал JSON PHP, поэтому дал немного лодную надежду на простоту.

я сейчас прошерстил пару ресурсов, и выяснил, что под PHP реализация JSON меняется от версии к версии. более того помимо встроенных функций генерации есть еще куча сторонних библиотек
короче говоря не все так просто на стороне ПХП,как мне думалось
что же до конкретно вашего примера, то мне удалось заставть его работать, используя строку не в CP1251, а в UTF-8
при этом строка декодируется в escape-последовательности, которые отлично расшифровываются на стороне сервера
Ответить с цитированием
  #13 (permalink)  
Старый 21.03.2009, 15:48
Аватар для dmitlantis
Интересующийся
Отправить личное сообщение для dmitlantis Посмотреть профиль Найти все сообщения от dmitlantis
 
Регистрация: 21.03.2009
Сообщений: 10

Проблема решена, надоело маяться с придирчивыми стандартными функциями, сделал свой транспорт, всё работает. Как говорится "хочешь 100% работу - сделай сам ", а утф 8, пробовал респонс приходит с пустой строкой {"formdata": ""}, как и при 1251...

Последний раз редактировалось dmitlantis, 21.03.2009 в 15:51.
Ответить с цитированием
  #14 (permalink)  
Старый 21.03.2009, 15:57
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

я имел в виду не заголовки с которыми идет, а сама строка должны быть в UTF-8
сохраните скрипт генерирующий в кодировке utf-8
либо используйте iconv()
Ответить с цитированием
  #15 (permalink)  
Старый 23.03.2009, 03:49
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
я сейчас прошерстил пару ресурсов, и выяснил, что под PHP реализация JSON меняется от версии к версии
Gvozd, есть разные мнения относительно того, как должны вести себя json_decode/json_encode с данными, отличными от массивов. С другими же проблемами не сталкивался
Ответить с цитированием
  #16 (permalink)  
Старый 23.03.2009, 04:17
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

dmitlantis, в соответствии с rfc, строки должны быть в одной из Unicode-кодировок. В мануале это требование указано. Кроме того, там же в комментариях есть решение с помощью iconv - http://ua.php.net/manual/en/function...code.php#72450
Ответить с цитированием
  #17 (permalink)  
Старый 23.03.2009, 07:52
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

x-yuri,
и вправду.
лично у меня возникает вопрос, как тогда передавать двоичные данные?
повторюсь, с JSON я общался не сильно тесно, и хтелось бы узнать как оно в таком случае делается
Ответить с цитированием
  #18 (permalink)  
Старый 23.03.2009, 11:56
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gvozd
лично у меня возникает вопрос, как тогда передавать двоичные данные?
А зачем с помощью json передавать двоичные данные?
Ответить с цитированием
  #19 (permalink)  
Старый 23.03.2009, 12:17
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

да зачем угодно
JSON может использоватся в десятках языках, и поэтому его можно использовать как транспорт между ними.
в JS я слабо представляю задачу тербующую передачи бинарных данных(если не притягивать за уши, и не брать во внимание старые вирусы)
в других языках спокойно можно придумать ряд задач.
вопрос был задан скорее из любопытства.
Ответить с цитированием
  #20 (permalink)  
Старый 23.03.2009, 12:39
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gvozd
JSON может использоватся в десятках языках
JSON предназначен для общения с JS, создан таким образом, чтобы раскодирование на стороне JS осуществлялось с помощью eval, интерпретатор JS не умеет парсить бинарные данные.

Если сильно хочется, base64 в помощь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с обработкой селектов html кода, пришедшего через ajax запрос Rage jQuery 6 26.01.2009 14:15
Проблема с кодировкой в скрипте автозаполнения Maratka AJAX и COMET 12 24.01.2009 12:31
Проблема с кодировкой magistr_bender Общие вопросы Javascript 2 07.09.2008 20:04
Проблема с кодировкой. SunYang Общие вопросы Javascript 12 05.08.2008 14:40
AJAX & XML slavonbl AJAX и COMET 3 10.07.2008 22:30