Показать сообщение отдельно
Старый 22.02.2013, 23:04   #9
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Ответ: Проблема с преобразованием типов Javascript

Сообщение от MoKa Посмотреть сообщение
Ну начну с того что возвращать просто число - никто так не делает.
Обычно возвращают JSON что в разы удобнее.

Во вторых переписывать стандартную функцию trim - я бы не делал этого вообще. Это ужасный говнокод, и если ты юзаешь где-то ещё trim'ы, а обычно народ юзает, то у тебя на trim'ы будет уходить в раз 10 больше ресурсов чем на стандартный.

Плюс писать так:
var resp = new String().trim(req.responseText); 
Это гиперговнокондство, т.к. ты уже имеешь прототип функцию для String'а.
Так что пиши так:
var resp req.responseText.trim(); 
Далее, да, ты никогда не должен полагаться на идентичность обработки ответов в броузерах на столь детальном уровне. Пустые пробелы или наличие /n или /r в конце сообщения. Также есть проблемы когда возвращается application/json, и в броузере стоит специальный аддон который json запросы красиво отображает - это дело вообще поломает твой запрос.
Если шлёшь от сервера данные, и хочешь чтобы они были максимально идентичны, шли с нужным Content-Type который не будет модифицироваться броузерами, например:
Content-Typetext/plain 
Такой запрос не должен быть обработан от сервера.

А вообще, я тебе порекомендую делать как все - шли JSON от сервера, так даже будет проще и удобнее слать сложные ответы.
header('Content-type: application/json');
$data = array();
$data['number'] = 4;
echo 
json_encode($data); 
И на клиенте так:
var data JSON.parse(req.responseText);
switch(
data.number) {
  ... 
Так ты сможешь слать любой приемлемой сложности данные, и без проблем парсить их в JSON.


Спасибо большое! С JSON не работал ещё, но сейчас думаю пришла пора изучать данный вопрос.
А то что сейчас у меня есть - сделано для отмазки, лишь бы работало. Плохо, да, нельзя так делать.
Не отрррицаю (c) А.Р. Бородач

Про стандартную функцию trim не знал, каюсь. Набил в гугле "javascript убрать пробелы" и воспользовался первым попавшимся результатом. Потом бы всё равно конечно исправил, но да, глупо с моей стороны.

Просто учусь делать активные сайты (пока что делаю копию сайта моего клана с юкоза).
Собственно это всё что я тут спрашивал у меня в форме входа используется (4 варианта ответа сервера возможных: 0-входим, 1-ненайден логин, 2-неверный пароль, 3-почему-то не удалось войти), и в зависимости от ответа нужное действие (например 0 отправляет на скрипт входа после некоторого времени). Пока что вот разбираюсь с входом и сессиями пользователей. Вопросов вагон и мааааленькая тележка, а время на из изучение, увы, отсутствует А ещё форум собрался писать сам. Жесть короче, губозакатыватель нужно купить
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a
(Offline)
 
Ответить с цитированием