【问题标题】:ParseInt not working on Jquery ajax responseParseInt 不适用于 Jquery ajax 响应
【发布时间】:2009-12-16 04:35:18
【问题描述】:

我在从 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);
            }
      }
    });
} 

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

【问题讨论】:

    标签: jquery ajax parseint


    【解决方案1】:
    data="89"
    typeof(data) //is string
    typeof(+data) //is number
    

    所以你也可以试试加号,而不是使用 parseInt

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

    【讨论】:

    • typeof(+data) 返回数字,但是 +data 本身返回 NaN
    • 你能做警报(data.length)吗?我认为您在“89”之前有一些非数字。
    • 现在更有意义了。 data.length = 211。这可能是由于我的 php 代码更新了文本文件 105 次以提供进度更新,所以它没有正确清理文件。解决此问题的最佳方法是什么?我认为修剪功能会起作用
    • 嗨 Lobe,我认为我们需要了解一些代码和信息,例如您如何更新该文本文件,以及背后的逻辑类型等。我认为您可以针对该特定问题提出新问题,我对php也不是很好。
    【解决方案2】:

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

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

    【讨论】:

    • 我试过 parseInt(data, 10) 但是没有区别。至于空格,我浏览了所有字符,找不到任何奇怪的地方。我通过在 webtoolkit.info/javascript-trim.html 找到的 trim 函数传递了它,但这并没有帮助。这越来越令人沮丧
    【解决方案3】:

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

    【讨论】:

    • 一个简单的方法是打印出 encodeURIComponent(data) -- 它应该显示任何不可打印的字符 url-encoded。
    猜你喜欢
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    相关资源
    最近更新 更多