Показать сообщение отдельно
Старый 22.02.2013, 21:14   #8
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Проблема с преобразованием типов Javascript

Ну начну с того что возвращать просто число - никто так не делает.
Обычно возвращают 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.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
St_AnGer (22.02.2013)