从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)是字符串和数据=“89”(或1-100中的另一个数字)但它仍然无效。有线索吗?
答案 0 :(得分:3)
您确定数据完全是“89”吗?如果字符串中的第一个非空白字符无法转换为数字,parseInt()
将返回NaN。
此外,使用parseInt指定基数是一个好习惯,以强制进行您正在寻找的转换。试试parseInt(data, 10)
。
答案 1 :(得分:2)
data="89"
typeof(data) //is string
typeof(+data) //is number
因此,您也可以尝试使用Plus +符号,而不是使用parseInt
与我所知的不同的是+符号和parseInt,当您解析空白或空白字符串时,parseInt返回NaN,+返回0
答案 2 :(得分:0)
尝试以编程方式浏览字符串的每个字符,也许有一个不可打印的字符阻止了parseInt的执行。