2

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

ファイアバグでは、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 に答える