JQuery, сумма данных AJAX не может работать правильно - PullRequest
0 голосов
/ 18 марта 2011
$.post('ajax_ceneizbaze.php', function(cenovnik){

                                    if(cenovnik){

                                        cenastr=cenovnik.cenastrana;
                                        cenadinamika=cenovnik.cenadinamika;
                                        cenabaza=cenovnik.cenabaza;
                                        cenakorpa = cenovnik.cenakorpa;
                                        cenacms = cenovnik.cenacms;
                                        inkrementodrzavanje = cenovnik.cenaodrzavanje;
                                        rezz = parseInt(cenastr+cenadinamika);
                                        alert(rezz);




                                   }
                                   else alert('bla bla..');


                                },'json');

начальное значение для cenastr - 25, а для cenadinamika - 50, Ajax отлично работает в этом примере, но когда я пытаюсь суммировать значения cenastr и cenadinamika, я получаю вывод 2550 вместо 75?почему я не могу преобразовать это в целое число и получить сумму в два раза меньше.это только выводит результат в строковом формате.я попытался parseInt разместить до операции суммы, но это не помогает.

Ответы [ 5 ]

1 голос
/ 18 марта 2011

Вы должны разобрать каждую из строк:

rezz = parseInt(cenastr) + parseInt(cenadinamika);

Попробуйте это

0 голосов
/ 18 марта 2011

Перед добавлением убедитесь, что переменные являются числами:

cenastr= +cenovnik.cenastrana;
cenadinamika= +cenovnik.cenadinamika;
//...
rezz = cenastr + cenadinamika;
0 голосов
/ 18 марта 2011

parseInt будет работать с результатом сложения, которое, будучи обеими строками, будет конкатенацией.

Или:

parseInt(cenastr) + parseInt(cenadinamika)

или используйте унарный оператор:

(+censtr) + (+cenadinamika);
0 голосов
/ 18 марта 2011

Оператор + имеет двойное назначение.В строках он объединяет их:

"25" + "50" = "2550"

С числами суммирует их.

25 + 50 = 75

Поэтому мы можем сделать вывод, что ваши две переменные являются строками, и что вы анализируете результат объединения их в целое число, что дает вам 2550.

Вам необходимо проанализировать каждое отдельное значение в int перед использованием+ оператор для их добавления:

rezz = parseInt(cenastr,10) + parseInt(cenadinamika,10);
0 голосов
/ 18 марта 2011

http://www.javascripter.net/faq/convert2.htm - это может помочь.Вам нужно преобразовать строки в числа перед вычислением!

...