ParseInt не работает над ответом jquery ajax - PullRequest
2 голосов
/ 16 декабря 2009

У меня особенная проблема с получением целого числа из ответа ajax. Всякий раз, когда я вызываю следующий код, parseInt (data) возвращает NaN, несмотря на то, что данные являются строкой.

function poll() {
    $.ajax({
      type: "GET",
      dataType: "html",
      url: 'images/normal/' + userId + '/' + saveCode + 'progress.txt',
      error: function() {poll();},
      success: function(data) {
        // Change the text
        $('#loading_text').html(data + '% complete');
        // Change the loading bar
        max = 357;
        current_percent = parseInt(data); // returns NaN
        $('loading_bar').width(Math.round(max * (current_percent / 100)));
        // Call the poll again in 2 seconds
        if (loaded != true)
            {
            setTimeout( poll, 2000);
            }
      }
    });
} 

В firebug typeof (data) - это строка, а data = "89" (или другое число от 1 до 100), но все еще не работает Любые подсказки?

Ответы [ 3 ]

3 голосов
/ 16 декабря 2009

Вы уверены, что данные точно "89"? Если первый непробельный символ в строке не может быть преобразован в число, parseInt() возвращает NaN.

Также рекомендуется указывать основание с помощью parseInt для принудительного преобразования, которое вы ищете. Попробуйте parseInt(data, 10).

2 голосов
/ 16 декабря 2009
data="89"
typeof(data) //is string
typeof(+data) //is number

Таким образом, вы также можете попробовать его со знаком плюс + вместо использования parseInt

Насколько я знаю, знак + и parseInt отличаются, когда вы анализируете пустые или пробельные строки, parseInt возвращает NaN, а + возвращает 0

0 голосов
/ 16 декабря 2009

Попробуйте программно просмотреть каждый символ строки, возможно, есть непечатаемый символ, который не позволяет выполнить parseInt.

...