【问题标题】:Unable to convert a string to integer [duplicate]无法将字符串转换为整数 [重复]
【发布时间】:2018-03-26 13:19:41
【问题描述】:

我的页面中有一个 AJAX 请求,.php 页面根据页面中的事件回显一个整数或字符串。但是,当变量到达我实际的 javascript 文件时,它变成了字符串。例如 4 更改为“4”。这使我的程序有问题,因为我的程序必须根据 responseText 运行。我有一个 XMLHTTPRequestObject.onload 函数,其工作方式如下:

    if(typeof XMLHTTPRequest.responseText === "number"){
// do something
}

我的 php 脚本提供了一个整数或字符串的结果,如果结果是字符串,那么我可以执行该函数,但它不会像这样发生。我尝试使用parseInt()Number() 更改变量,但是随后,所有内容都更改为数字,或者它是s 字符串。那么,我该如何解决这个问题呢?请帮忙!

【问题讨论】:

  • XMLHttpRequest.responseText总是是一个字符串。您可以将响应编码为 JSON,然后解析响应。
  • if (XMLHTTPRequest.responseText == 2) 将在测试之前将“2”转换为数字
  • 那么,我该怎么办?

标签: javascript integer


【解决方案1】:

您可以尝试使用Number 将字符串转换为数字。如果您收到NaN,则您知道该字符串不是有效数字,例如123notANumber,请参阅 here 了解更多信息。

if (isNaN(Number('123test')) {
  // This is a string
}
else {
  // It's a number
}

【讨论】:

    【解决方案2】:

    正如 cmets 中提到的,XMLHttpRequest.responseText始终是一个字符串。最简单的解决方案可能是使用Number 构造函数将该字符串转换为数字。如果字符串不代表整数,Number 将返回 NaN。因此,您可以这样做,而不是您目前拥有的东西:

    const parsed = Number(XMLHTTPRequest.responseText);
    if(isNaN(parsed)){
        //handle case where response is a string
    } else {
        //handle case where response is a number
    }
    

    【讨论】:

    猜你喜欢
    • 2014-04-18
    • 2011-03-31
    • 1970-01-01
    • 2010-11-21
    • 2013-10-06
    • 2012-10-22
    相关资源
    最近更新 更多