2009-12-16 95 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