Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 04.12.2011, 15:02
Аспирант
Отправить личное сообщение для diagnost Посмотреть профиль Найти все сообщения от diagnost
 
Регистрация: 30.10.2008
Сообщений: 47

Т.е на стороне сервера сформировать массив из выборки и потом через json_encode передать этот массив клиенту? Или можно обойтись без формирования массива из выборки на стороне сервера и передавать выборку каким-то образом напрямую в массив клиента?
Ответить с цитированием
  #22 (permalink)  
Старый 01.01.2012, 19:14
Аспирант
Отправить личное сообщение для diagnost Посмотреть профиль Найти все сообщения от diagnost
 
Регистрация: 30.10.2008
Сообщений: 47

У меня через json_encode не передаются русские строки. Это можно решить?
Ответить с цитированием
  #23 (permalink)  
Старый 01.01.2012, 19:21
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от diagnost
У меня через json_encode не передаются русские строки. Это можно решить?
можно
rawurlencode
iconv

Последний раз редактировалось dmitriymar, 01.01.2012 в 19:23.
Ответить с цитированием
  #24 (permalink)  
Старый 01.01.2012, 19:39
Аспирант
Отправить личное сообщение для diagnost Посмотреть профиль Найти все сообщения от diagnost
 
Регистрация: 30.10.2008
Сообщений: 47

Спасибо. Дело было действительно в кодировке БД. iconv выручил. В "исходном" тексте после передачи русской строки в JS отсутствовали двойные кавычки. Может быть, есть смысл просто их подставлять без перекодирования?

Последний раз редактировалось diagnost, 01.01.2012 в 19:42.
Ответить с цитированием
  #25 (permalink)  
Старый 06.01.2012, 15:16
Аспирант
Отправить личное сообщение для d-kaktus Посмотреть профиль Найти все сообщения от d-kaktus
 
Регистрация: 05.01.2012
Сообщений: 38

Я внёс бы поправку в код: нельзя забывать про кавычки при implode, это касается строковых значений массива:
<script>var a=['<?=implode("','",$arr)?>'];</script>
Ответить с цитированием
  #26 (permalink)  
Старый 10.01.2012, 23:19
Новичок на форуме
Отправить личное сообщение для Ъь_ Посмотреть профиль Найти все сообщения от Ъь_
 
Регистрация: 19.10.2010
Сообщений: 4

Есть несколько решений, например вот

<?php
 function json_fix_cyr($json_str) {
     $cyr_chars = array (
         '\u0430' => 'а', '\u0410' => 'А',
         '\u0431' => 'б', '\u0411' => 'Б',
         '\u0432' => 'в', '\u0412' => 'В',
         '\u0433' => 'г', '\u0413' => 'Г',
         '\u0434' => 'д', '\u0414' => 'Д',
         '\u0435' => 'е', '\u0415' => 'Е',
         '\u0451' => 'ё', '\u0401' => 'Ё',
         '\u0436' => 'ж', '\u0416' => 'Ж',
         '\u0437' => 'з', '\u0417' => 'З',
         '\u0438' => 'и', '\u0418' => 'И',
         '\u0439' => 'й', '\u0419' => 'Й',
         '\u043a' => 'к', '\u041a' => 'К',
         '\u043b' => 'л', '\u041b' => 'Л',
         '\u043c' => 'м', '\u041c' => 'М',
         '\u043d' => 'н', '\u041d' => 'Н',
         '\u043e' => 'о', '\u041e' => 'О',
         '\u043f' => 'п', '\u041f' => 'П',
         '\u0440' => 'р', '\u0420' => 'Р',
         '\u0441' => 'с', '\u0421' => 'С',
         '\u0442' => 'т', '\u0422' => 'Т',
         '\u0443' => 'у', '\u0423' => 'У',
         '\u0444' => 'ф', '\u0424' => 'Ф',
         '\u0445' => 'х', '\u0425' => 'Х',
         '\u0446' => 'ц', '\u0426' => 'Ц',
         '\u0447' => 'ч', '\u0427' => 'Ч',
         '\u0448' => 'ш', '\u0428' => 'Ш',
         '\u0449' => 'щ', '\u0429' => 'Щ',
         '\u044a' => 'ъ', '\u042a' => 'Ъ',
         '\u044b' => 'ы', '\u042b' => 'Ы',
         '\u044c' => 'ь', '\u042c' => 'Ь',
         '\u044d' => 'э', '\u042d' => 'Э',
         '\u044e' => 'ю', '\u042e' => 'Ю',
         '\u044f' => 'я', '\u042f' => 'Я',
  
         '\r' => '',
         '\n' => '<br />',
         '\t' => ''
     );
  
     foreach ($cyr_chars as $cyr_char_key => $cyr_char) {
         $json_str = str_replace($cyr_char_key, $cyr_char, $json_str);
     }
     return $json_str;
 }
  
 echo json_fix_cyr(json_encode(array("собака","кошка"))); // ["собака","кошка"]
 ?>
Ответить с цитированием
  #27 (permalink)  
Старый 11.01.2012, 02:18
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Ъь_,
Господи, это что? А что встроенные возможности PHP вдруг перестали работать?
Ответить с цитированием
  #28 (permalink)  
Старый 26.01.2012, 22:28
Аспирант
Отправить личное сообщение для diagnost Посмотреть профиль Найти все сообщения от diagnost
 
Регистрация: 30.10.2008
Сообщений: 47

Теперь понадобилось вернуть достаточно большой массив обратно из js в php. GET уже не проходит по длине адресной строки. Есть ли способ передать массив целиком, а не поэлементно?

Если этот массив получится вернуть целиком, то хотелось бы засунуть его в SQL запрос в php:

SELECT * FROM DB.simple WHERE ind IN ...

Можно ли после IN поставить в строке запроса полученный массив, назовем его к примеру $arr? Тогда какова должна быть внутренняя структура такого массива?

Последний раз редактировалось diagnost, 26.01.2012 в 22:30.
Ответить с цитированием
  #29 (permalink)  
Старый 27.01.2012, 22:41
С++/C# modest developer
Отправить личное сообщение для nekto_O Посмотреть профиль Найти все сообщения от nekto_O
 
Регистрация: 07.11.2011
Сообщений: 244

Сообщение от diagnost
Можно ли после IN поставить в строке запроса полученный массив
Как вариант:
$query = 'SELECT * FROM DB.simple WHERE ind IN (' . implode(",", $arr) . ')';
Ответить с цитированием
  #30 (permalink)  
Старый 27.01.2012, 22:51
Аспирант
Отправить личное сообщение для diagnost Посмотреть профиль Найти все сообщения от diagnost
 
Регистрация: 30.10.2008
Сообщений: 47

Спасибо. Скорее всего получится работать с SQL и через json_encode. Остается еще вопрос, как передать массив на сервер с помощью POST, желательно без JQuery. Вроде надо использовать JSON в JS, тем более, что JSON поддерживают современные браузеры. Поле, понятно, hidden, но как именно подставить в value массив?

Последний раз редактировалось diagnost, 27.01.2012 в 22:55.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
php + javascript, проверка капчи zhuzha Общие вопросы Javascript 10 02.06.2010 13:30
Как передать картинку из javascript в php KIVagant AJAX и COMET 3 12.05.2010 11:54
javascript и php (Вопрос) Гауляйтер Общие вопросы Javascript 3 06.05.2009 09:23
JAVASCRIPT в цикле PHP Nobls Общие вопросы Javascript 3 04.12.2008 17:51