将HTTP请求中的所有变量视为整数(有异常)

时间:2014-10-17 12:44:21

标签: javascript php mysql angularjs

我在Angular中有一个HTTP请求,它从Mysql表中提取所有数据。

$http({
  method: "POST",
  url: "framework/actions/league.php?query=getDivision"
}).success(function(data){
  $scope.division = data;
});

数据片段如下所示:

[
  {
    name: "Someone",
    number: "4",
    game1: "6",
    game2: "2",
    score: "8"
  },
  {
    name: "Someone else",
    number: "7",
    game1: "7",
    game2: "3",
    score: "10"
  },
]

当该数据从HTTP请求返回并被分配到$scope.division时,这些数字将被视为字符串,这使我在orderBy中使用ngRepeat时出现问题。

如何将数字字段视为数字,而无需在forEach中声明每个字段并使用parseInt()?是否可以在PHP中执行此操作?如果没有,在Angular javascript中执行它会没问题。

当然,由于名称字段,我无法将每个字段视为数字。

1 个答案:

答案 0 :(得分:2)

您可以在发送结果之前使用PHP函数intval() 将字符串转换为数字:

$string = '123';
$number = intval($string);
// 123

$number2 = intval('456');
// 456

直接在变量语句上转换

$string = '123';
$number = (int)$string;
// 123

$number2 = (int)'456';
// 456

使用transformResponse方法在AngularJS 中执行此操作:

$http({
    method: "POST",
    url: "framework/actions/league.php?query=getDivision",
    transformResponse: function(data) {

        for (var i=0; i<data.length; i++) {
            for(var k in data[i]) {
                if (data[i].hasOwnProperty(k)) {
                    data[i][k] = isNaN(+data[i][k]) ? data[i][k] : +data[i][k];
                }
            }
        }

        return data;   
    },
    success: function(data){
        $scope.division = data;
    }
});
相关问题