JSON_ENCODE将所有数组值转换为AJAX请求中的字符串

时间:2015-03-27 10:23:40

标签: php mysql arrays ajax json

我执行一个简单的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"
   ...

有人知道这个问题吗?

先谢谢。

2 个答案:

答案 0 :(得分:0)

你使用什么PHP版本?

尝试:

  

echo json_encode($ buildings,JSON_NUMERIC_CHECK);

答案 1 :(得分:0)

Javascript具有动态数据类型。因此int string等没有特定的数据类型。相同的var对象可以保存所有数据类型。它将根据您对这些变量执行的操作动态识别类型。