代码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);
};
}
})();