2

我在从 ajax 响应中获取整数时遇到了一个特殊的问题。每当我调用以下代码时,parseInt(data) 都会返回 NaN,尽管 data 是一个字符串。

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);
            }
      }
    });
} 

在萤火虫中, typeof(data) 是字符串和 data = "89" (或 1-100 之间的另一个数字)但它仍然无法正常工作。有什么线索吗?

4

3 回答 3

3

你确定数据正好是“89”吗?如果字符串中的第一个非空白字符无法转换为数字,则parseInt()返回 NaN。

此外,最好使用 parseInt 指定基数,以强制进行您正在寻找的转换。试试parseInt(data, 10)

于 2009-12-16T04:42:45.093 回答
3
data="89"
typeof(data) //is string
typeof(+data) //is number

因此,您也可以尝试使用加号 + 号,而不是使用 parseInt

据我所知,与 + 符号和 parseInt 不同的是,当您解析空白或空白字符串时,parseInt 返回 NaN,而 + 返回 0

于 2009-12-16T04:53:53.527 回答
0

尝试以编程方式浏览字符串的每个字符,也许有一个不可打印的字符阻止 parseInt 执行。

于 2009-12-16T04:39:42.403 回答