2009-12-16 58 views
2

我有一个特殊的问题从ajax响应获取整数。无论何时我调用下面的代码,parseInt(data)都会返回NaN,尽管数据是一个字符串。ParseInt不工作jQuery的ajax响应

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(数据)是串和数据=“89”(或从另一个1-100号)但它仍然是不工作。任何线索?

回答

2
data="89" 
typeof(data) //is string 
typeof(+data) //is number 

所以,你也可以给它加+号一试,而不是使用parseInt函数

有+号和parseInt函数不同的,据我所知道的是,当你分析的空白或空白字符串,parseInt函数返回NaN,+返回0

+0

typeof(+数据)返回数字,但只是+数据本身返回NaN – Lobe 2009-12-16 05:07:24

+0

你可以做alert(data.length)吗?我认为在“89”之前你有一些非数字。 – YOU 2009-12-16 05:21:16

+0

这使现在更有意义。 data.length = 211.这可能是由于我的php代码更新了文本文件105次以提供进度更新,所以它没有正确清理文件。什么是解决这个问题的最好方法?我认为修剪功能会起作用 – Lobe 2009-12-16 06:06:07

0

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

+1

一个简单的方法是打印出encodeURIComponent(data) - 它应该显示任何不可打印的字符url编码。 – Annie 2009-12-16 06:03:44

3

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

此外,指定带有parseInt的基数是一种很好的做法,可以强制您正在查找的转换。尝试parseInt(data, 10)

+0

+1评论re:提供基数为10的基数 – Funka 2009-12-16 04:54:21

+0

我试过parseInt(data,10),但是没有什么区别。至于空白,我浏览了所有人物,并且找不到任何奇怪的东西。我通过webtoolkit.info/javascript-trim.html中的修剪函数传递它,并没有帮助。这是变得非常沮丧 – Lobe 2009-12-16 05:06:40