в chrome: условный оператор завершается неудачно для результата jquery / ajax - PullRequest
2 голосов
/ 20 января 2012

это мой код. отправляет запрос ajax на страницу и сообщает результат

function num(){
    $.ajax({
        type: 'POST',
        url: 'num.php',
        success: function(data) {
            data = parseInt($.trim(data));
            if(data == 1 )
                alert(' its num 1');
            else  
                alert(data)
        }
    })
}

num.php

<?php echo 1; ?>

он отлично работает в ie и ff, но в chrome это условное выражение по какой-то причине не работает, и я получаю '1' в окне предупреждения

Ответы [ 3 ]

0 голосов
/ 20 января 2012

Для преобразования строки вы можете попробовать:

data = data/1;

Для сравнения используйте '===':

if(data === 1 )
0 голосов
/ 22 января 2012

по моему личному опыту, ваш файл num.php или один из включенных файлов имеет неправильную кодировку, и он добавляет некоторые невидимые символы к результату.попробуйте изменить кодировку на utf8 без bom и удалите включенные файлы из num.php

0 голосов
/ 20 января 2012

Вместо оповещений. Используйте console.log(data), потому что на самом деле он покажет вам ТИП, и вы сможете регистрировать больше данных, вместо использования раздражающих оповещений.

Консоль может показать вам потенциальное преобразование типов (даже если вы используете parseInt), оно может быть приведено к строке снова ... кто знает ... потому что все эти браузеры используют свои собственные J / Engines ... соглашения могут быть немного не .

например

  • data = '1' (хром)
  • дата = 1 (т. Е. / Фф)

Также console.log($(object)) воспроизводит PHP print_r(object)

Оповещение не делает этого .. jsut скажет [объект объекта] - попробуйте уклониться от предупреждений.

Используйте правую кнопку мыши - проверьте доступ к консоли в Chrome

...