由于parseFloat而获得$ NaN和undefined

时间:2015-11-13 14:50:18

标签: php mysql node.js

代码X:

var url = 'http://'+sitename+'/cost.php?item='+encodeURIComponent(itemname);
                                    (function(somestuff) {
                                    request(url, function(error, response, body){
                                        if(!error && response.statusCode === 200){
                                            var unixtime = Math.round(new Date().getTime()/1000.0);
                                            if(body == "notfound") { offers.declineOffer({tradeOfferId: offer.tradeofferid}); mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`, `win`, `system`, `time`) VALUES (\''+offer.steamid_other+'\',\'Item not available \',\'System\', \'0\', \'1\', \''+unixtime+'\')', function(err, row, fields) {}); }
                                            else {
                                                wgg[somestuff].cost = parseFloat(body);
                                            }
                                        } else offers.declineOffer({tradeOfferId: offer.tradeofferid});
                                    });})(i)

我在node.js中运行CODE X时有时会获得$ NaN或未定义的值。我怎么解决这个问题?因此,cost.php输入数据库中项目的值,同时也以数字格式回显它,但是parseFloat由于某种原因没有正确读取值。我想添加一个" if"

中的条件
  else {
 wgg[somestuff].cost = parseFloat(body);
 }

将wgg [somestuff] .cost的结果与$ Nan或undefined进行比较,如果结果为true,则执行mysql查询以从数据库中选择价格,或者可能而不是执行parseFloat(正文)只需从中选择项目价格数据库直接(没有更多"如果"分支在建议的其他内部添加。另外,cost.php在开头包含这个,基本上修改" itemname"的名称:

$item = $_GET['item'];
$item = str_replace("\"", "", $item);
$item = str_replace("\'", "", $item);
$item = str_replace(" ", "%20", $item);
$item = str_replace("\\", "", $item);

所以我可能需要在node.js代码中实现这个新名称,因为数据库中的表格具有$ item结果格式的项目名称,因此我无法执行正确的查询拥有新的项目名称(使用%20等)。或者也许我可以编辑cost.php将$ item作为初始值存储在数据库中,而没有%20,将它存储到另一个变量中?任何帮助/建议赞赏:)。

更新 - 我在一个论坛上发现了这个,我不知道这是否能解决这个问题?如果是,我该如何实施呢? 代码:

    (function() {
  /**
   * Decimal adjustment of a number.
   *
   * @param {String}  type  The type of adjustment.
   * @param {Number}  value The number.
   * @param {Integer} exp   The exponent (the 10 logarithm of the adjustment base).
   * @returns {Number} The adjusted value.
   */
  function decimalAdjust(type, value, exp) {
    // If the exp is undefined or zero...
    if (typeof exp === 'undefined' || +exp === 0) {
      return Math[type](value);
    }
    value = +value;
    exp = +exp;
    // If the value is not a number or the exp is not an integer...
    if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
      return NaN;
    }
    // Shift
    value = value.toString().split('e');
    value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
    // Shift back
    value = value.toString().split('e');
    return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
  }

  // Decimal round
  if (!Math.round10) {
    Math.round10 = function(value, exp) {
      return decimalAdjust('round', value, exp);
    };
  }
  // Decimal floor
  if (!Math.floor10) {
    Math.floor10 = function(value, exp) {
      return decimalAdjust('floor', value, exp);
    };
  }
  // Decimal ceil
  if (!Math.ceil10) {
    Math.ceil10 = function(value, exp) {
      return decimalAdjust('ceil', value, exp);
    };
  }
})();

0 个答案:

没有答案