我执行一个简单的AJAX请求,我从mysql数据库中选择一些数据。当我将我的Array传递回Javascript时,它总是将我的Array中的所有值转换为String,如果它的数据类型在我的数据库中是整数或布尔值,则无关紧要。
我刚刚发现,MySQLi总是将数据类型转换为字符串,所以我猜这就是问题所在。 json_encode工作得很好.. https://stackoverflow.com/a/5323169/4720149
SQL声明
function getAll()
{
// Get all buildings
$db = new db();
$sql = "SELECT * FROM building";
$result = $db->runQuery($sql);
$rows = array();
while($row = $result->fetch_assoc()) {
$rows[] = $row;
}
return $rows;
}
PHP控制器文件
function getBuildings(){
$bu_db = new Building_Model();
$buildings = $bu_db->getAll();
echo json_encode($buildings);
}
Javascript文件
var data = {
action: "getBuildings"
};
$.ajax({
type: "POST",
dataType: "json",
url: "controller/Building.php",
data: data,
success: function(data) {
console.log(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("Error in AJAX Request: " + textStatus + ", " + errorThrown);
}
});
它不是保留数据库中的原始数据类型,而是将所有值转换为字符串:
输出
[Object, Object, Object, Object, Obje...]
>0: Object
>1: Object
>2: Object
>3: Object
ActiveCost: "20"
BuildEfc: "0"
BuildSfx: "0"
BuildingEfc: "0"
BuildingID: "1"
Name: "Vogtei I"
ResidentLvLNeeded: "0"
...
有人知道这个问题吗?
先谢谢。
答案 0 :(得分:0)
你使用什么PHP版本?
尝试:
echo json_encode($ buildings,JSON_NUMERIC_CHECK);
答案 1 :(得分:0)
Javascript具有动态数据类型。因此int string等没有特定的数据类型。相同的var对象可以保存所有数据类型。它将根据您对这些变量执行的操作动态识别类型。