[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Преобразование строки с числом в число
wollk
Не знаю как правильно назвать тему, но проблема следующая.
Посылаю запрос с помощью:
$.get(....)

И результат - число, заношу в переменную
Но похожу что JS думает что то строка, а не число
И при if(num<5) - .. условие не срабатывает
П,С. не надо говорить, вдруг оно равно или больше 5




Спустя 2 минуты, 57 секунд (25.10.2011 - 21:24) Winston написал(а):
if(parseInt(num)<5)

Спустя 9 минут, 45 секунд (25.10.2011 - 21:33) wollk написал(а):
При выводе, пишет Nan

Спустя 3 минуты, 36 секунд (25.10.2011 - 21:37) killer8080 написал(а):
wollk
выведи через алерт, и посмотри что там на самом деле. Похоже нет там никакого числа.

Спустя 1 минута, 12 секунд (25.10.2011 - 21:38) Winston написал(а):
Смотри
Про Nan тоже написано

Спустя 3 минуты, 47 секунд (25.10.2011 - 21:42) wollk написал(а):
Пишет 3

Спустя 3 минуты, 30 секунд (25.10.2011 - 21:45) killer8080 написал(а):
Цитата (wollk @ 25.10.2011 - 21:42)
Пишет 3

тогда и проблем быть не должно, даже без parseInt()
Покажи код, наверно там ошибка.

Спустя 8 минут, 21 секунда (25.10.2011 - 21:54) wollk написал(а):
В обработчике, куда посылаю запрос перед выводом стоит intval()

function num_up(num){
if(num<1){
alert("Меньше 1");
}
if(num>1 && num<5){
alert("1-4");
}
}

$.get("index.php?action=num",
{},
function(data){
num_up(data);
});



Спустя 3 минуты, 29 секунд (25.10.2011 - 21:57) killer8080 написал(а):
данные в каком формате? json?

Спустя 1 минута, 56 секунд (25.10.2011 - 21:59) Winston написал(а):
Здесь все нормально...

Спустя 25 секунд (25.10.2011 - 22:00) killer8080 написал(а):
Попробуй
$.get("index.php?action=num", 
{},
function(data){
num_up(data[0]);
});

Спустя 51 секунда (25.10.2011 - 22:00) wollk написал(а):
Цитата (killer8080 @ 25.10.2011 - 18:57)
данные в каком формате? json?

без понятия в каком формате данные

Спустя 1 минута, 12 секунд (25.10.2011 - 22:02) killer8080 написал(а):
Цитата (wollk @ 25.10.2011 - 22:00)
без понятия в каком формате данные

ну так сделай
alert(typeof data);

Спустя 1 минута, 12 секунд (25.10.2011 - 22:03) wollk написал(а):
Ну вот стоит мне где ГЕТ написать:

alert(parseInt(data));

Получаю Nan


Формат данных - string

Спустя 9 минут, 17 секунд (25.10.2011 - 22:12) killer8080 написал(а):
wollk
так делаешь?
function num_up(num){
num = parseInt(num);
if(num<1){
alert("Меньше 1");
}
if(num>1 && num<5){
alert("1-4");
}
}


$.get("index.php?action=num",
{},
function(data){
num_up(data);
});

Спустя 3 минуты, 42 секунды (25.10.2011 - 22:16) wollk написал(а):
И так тоже делал

Спустя 21 минута, 49 секунд (25.10.2011 - 22:38) killer8080 написал(а):
wollk
хочешь сказать
alert(data) выводит число, а
alert(parseInt(data)) даёт NaN
Что то тут не вяжется ph34r.gif

Спустя 21 минута, 16 секунд (25.10.2011 - 22:59) wollk написал(а):
Да-да, именно так

Спустя 5 минут, 13 секунд (25.10.2011 - 23:04) killer8080 написал(а):
Цитата (wollk @ 25.10.2011 - 22:59)
Да-да, именно так

так в том то и проблема, что такого быть не может smile.gif
При выводе переменной через alert, для переменной неявно вызывается метод toString()
Если в алерте видишь число, то NaN parseInt по определению выдать не может. Что то ты путаешь.

PS а браузер какой?

Спустя 2 минуты, 51 секунда (25.10.2011 - 23:07) wollk написал(а):
Хром

Спустя 45 секунд (25.10.2011 - 23:08) wollk написал(а):
Хм.. а в мазиле робит. Но так не надо(((

Спустя 4 минуты, 14 секунд (25.10.2011 - 23:12) killer8080 написал(а):
wollk
как выводятся данные в index.php?

Спустя 5 минут, 10 секунд (25.10.2011 - 23:17) wollk написал(а):
Пример:

$num=запрос к БД;
echo intval($num);

Спустя 8 минут, 24 секунды (25.10.2011 - 23:25) Winston написал(а):
Достаточно просто
echo (int)$num;


Спустя 17 секунд (25.10.2011 - 23:26) killer8080 написал(а):
попробуй добавить заголовок
header("Content-Type: text/plain");

Спустя 4 минуты, 51 секунда (25.10.2011 - 23:31) wollk написал(а):
Цитата (killer8080 @ 25.10.2011 - 20:26)
попробуй добавить заголовок
header("Content-Type: text/plain");

Безтолку

Спустя 1 минута, 19 секунд (25.10.2011 - 23:32) wollk написал(а):
Цитата (Winston @ 25.10.2011 - 20:25)
Достаточно просто
echo (int)$num;

Тоже не помогло(((( sad.gif

Спустя 2 минуты, 33 секунды (25.10.2011 - 23:34) killer8080 написал(а):
wollk
посмотри фаирбагом, что реально отсылает сервер.

Спустя 7 минут, 23 секунды (25.10.2011 - 23:42) wollk написал(а):
5

Дело в хроме чтоли ? ((((( blink.gif

Спустя 3 минуты, 32 секунды (25.10.2011 - 23:45) killer8080 написал(а):
wollk
на вкладке сеть посмотри ответ сервера.

Спустя 11 часов, 46 минут, 21 секунда (26.10.2011 - 11:32) wollk написал(а):
Цитата (killer8080 @ 25.10.2011 - 20:45)
wollk
на вкладке сеть посмотри ответ сервера.

Date Wed, 26 Oct 2011 08:31:51 GMT
Server Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k PHP/5.3.3
X-Powered-By PHP/5.3.3
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma no-cache
Content-Length 68
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Content-Type text/html; charset=UTF-8

Спустя 15 минут, 30 секунд (26.10.2011 - 11:47) Invis1ble написал(а):
Это Response Headers во вкладке Headers, а ты посмотри во вкладке Response

Спустя 10 минут, 8 секунд (26.10.2011 - 11:57) wollk написал(а):
user posted image

Спустя 2 минуты, 24 секунды (26.10.2011 - 12:00) Invis1ble написал(а):
Мистика, господа! laugh.gif

Может с кодировкой что-то? Хотя хз, каким боком она тут....

Спустя 1 минута, 23 секунды (26.10.2011 - 12:01) Guest написал(а):
Ну так в Firefox работает, а в Chrom нет

Спустя 3 минуты, 15 секунд (26.10.2011 - 12:04) Invis1ble написал(а):
Как вариант - предлагаю продемонстрировать код еще раз, вместе с parseInt

Спустя 14 минут, 48 секунд (26.10.2011 - 12:19) wollk написал(а):
<script type="text/javascript">

function num_up(num){
num=parseInt(num);
if(num<1){
alert("Меньше 1");
}
if(num>1 && num<5){
alert("1-4");
}
}


$.get("index.php?action=num",
{},
function(data){
num_up(data);
});
</
script>

Спустя 46 секунд (26.10.2011 - 12:20) wollk написал(а):
Разве что попробовать другим способом запрос к серверу посылать..

Или попробовать число с помощью регулярного выражения вырезать. Но с этим у меня проблемы((

Спустя 11 минут, 36 секунд (26.10.2011 - 12:32) killer8080 написал(а):
wollk
нелепое предположение, но всё же, может файл в кодировке с BOM?

ЗЫ а в остальных браузерах всё нормально? ФФ, Опера, ИЕ, Сафари?

Спустя 3 минуты, 39 секунд (26.10.2011 - 12:35) wollk написал(а):
В ФФ работает, даже в ИЕ работает. А вот оперы и сафари нету на компе.
Нет, файл без BOM

Спустя 1 час, 2 минуты, 20 секунд (26.10.2011 - 13:38) Invis1ble написал(а):
Все же я склоняюсь к версии с боками в кодировке (или попаданием в ответ неотображаемых символов). Проверь так
function num_up(num){
alert(num.length); // что выводит и что во вкладке Response при этом?
num=parseInt(num);
if(num<1){
alert("Меньше 1");
}
if(num>1 && num<5){
alert("1-4");
}
}

Спустя 30 минут, 35 секунд (26.10.2011 - 14:08) killer8080 написал(а):
Цитата (wollk @ 26.10.2011 - 11:32)
Date Wed, 26 Oct 2011 08:31:51 GMT
Server Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k PHP/5.3.3
X-Powered-By PHP/5.3.3
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma no-cache
Content-Length 68
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Content-Type text/html; charset=UTF-8

Это заголовок аякса? Откуда там длина контента аж 68 байт? blink.gif
У тебя же там один байт должен быть
Цитата
user posted image

Спустя 2 минуты, 34 секунды (26.10.2011 - 14:11) Invis1ble написал(а):
Меня это тоже смутило, но там вроде в Content-Length входят еще какие-то данные

Спустя 2 минуты, 36 секунд (26.10.2011 - 14:13) killer8080 написал(а):
Цитата (Invis1ble @ 26.10.2011 - 14:11)
но там вроде в Content-Length входят еще какие-то даные

Да нет не должно, может это не тот заголовок? blink.gif

Спустя 1 минута, 27 секунд (26.10.2011 - 14:15) Invis1ble написал(а):
Хз, я написал уже самый простой способ проверить выше smile.gif

Спустя 20 минут, 2 секунды (26.10.2011 - 14:35) wollk написал(а):
Цитата (Invis1ble @ 26.10.2011 - 10:38)
Все же я склоняюсь к версии с боками в кодировке (или попаданием в ответ неотображаемых символов). Проверь так
function num_up(num){
alert(num.length); // что выводит и что во вкладке Response при этом?
num=parseInt(num);
if(num<1){
alert("Меньше 1");
}
if(num>1 && num<5){
alert("1-4");
}
}

5 в окошке :blink:
Во вкладке 200 (П.С. 200 это норм, не обращайте внимание что больше 5)

Спустя 7 минут, 13 секунд (26.10.2011 - 14:42) Invis1ble написал(а):
Цитата
5 в окошке blink.gif

- ну вот тебе и ответ. Похоже на BOM, только по идее с BOM 6 должно быть. Мб тупо пробелы или переводы строк.

Спустя 13 минут, 43 секунды (26.10.2011 - 14:56) wollk написал(а):
Поставил
alert(data.length);
В ГЕТ выводит 4

Спустя 4 минуты, 25 секунд (26.10.2011 - 15:00) wollk написал(а):
хм.. там получается как я понял двоечка лишняя .. точнее если число из 3 цифр, то он пишет 5, если из 2 - пишет 4

Спустя 2 минуты, 51 секунда (26.10.2011 - 15:03) Invis1ble написал(а):
покажи php-обработчик, формирующий ответ

Спустя 40 минут, 38 секунд (26.10.2011 - 15:44) wollk написал(а):
Вот почему стоит приинклудить файл с этим содержимым, и появляются лишние символы когда я посылаю ГЕТ запрос

<?php
function
limpiar($mensaje)
{
if(!is_numeric($mensaje)){
$mensaje = htmlspecialchars(stripslashes(trim($mensaje)));
$mensaje = addslashes($mensaje);
}
return $mensaje;
}?>

Спустя 8 минут, 53 секунды (26.10.2011 - 15:53) killer8080 написал(а):
wollk
покажи обработчик целиком
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.