我有一个 MySQL 数据库,其中有一列数值。当我在 PHP 中查询该数据库并将 mysql_result 回显给 jQuery 时,返回的值似乎有多余的换行符和空格(根据 Firebug 和警报()实验)。
当将结果变量放入带有innerhtml的元素时,结果变量似乎按我的预期工作,但即使在尝试清除任何额外字符并运行parseInt之后,我也无法使用逻辑或数学函数来处理它...
下面是一些示例代码,但我可能做了一些非常简单的错误。
有什么想法吗?
PHP“loadxp.php”
<?php session_start();
include("dbconnect.php");
//retrieve userid from session variable
$user = $_SESSION['userid'];
$query = "SELECT xp FROM breadusers WHERE userid='$user'";
$link =@mysql_query($query);
if(!$link){
die('Could not query:' . mysql_error());
}
echo mysql_result($link, 0);
?>
Javascript:
function showXP(){
var xP;
var level;
//jQuery AJAX load XP
$.get("scripts/loadxp.php", function(data){
xP = data;
//Display XP
$('#xpDisplay').html(xP);//NB: WORKS AS EXPECTED
//Calculate level
level = calculateLevel(xP);
//Display level
$('#levelDisplay').html(level);//Always NaN
});
}
function calculateLevel(xP){
var level;
var xPInt;
xP = xP.replace(/(\r\n|\n|\r| )/gm,"");//Attempt to strip out line breaks and spaces
xPInt = parseInt(xP,10);//Always seems to return "NaN"
alert("xP value: \"" + xP + "\" of type: " + typeof(xP) + "\nxPInt value: \"" + xPInt + "\" of type: " + typeof(xPInt));//xP is described as String "0", xPInt Number "NaN"
if ( xP == 0 ) {
level = 1;
} else {
level = Math.floor(1+Math.sqrt((xP/125) + 1));
}
return level;
}
最佳答案
简短回答:使用 JSON。 PHP:
$xp = (int)mysql_result($link, 0);
echo json_encode($xp);
JavaScript:
$.getJSON('scripts/loadxp.php', function(xp) {
alert(xp); // 1
alert(typeof xp); // number
});
值得注意的是,您可以使用 JSON 来回发送任意数量的 native 类型。字符串、数字、 bool 值、null、数组和对象都受支持。
关于php - 使用 jQuery 和 PHP 从 MySQL 获取单个数值,并拒绝在 js 级别充当 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5279217/