Javascript 将HTTP请求中的所有变量视为整数(例外)

Javascript 将HTTP请求中的所有变量视为整数(例外),javascript,php,mysql,angularjs,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",

我在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
时,这些数字被视为字符串,这给我在
ngRepeat
中使用
orderBy
带来了问题

如何使数字字段被视为数字,而不必在
forEach
中声明每个字段并使用
parseInt()
?在PHP中可以这样做吗?如果不是这样,那么在有角度的javascript中执行就可以了


当然,由于名称字段的原因,我不能将每个字段都视为数字。

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

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

$number2 = intval('456');
// 456
直接在assign语句上强制转换变量

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

$number2 = (int)'456';
// 456
或在AngularJS中使用以下方法进行操作:

$http({
方法:“张贴”,
url:“framework/actions/league.php?query=getDivision”,
transformResponse:功能(数据){

for(var i=0;iA string通过HTTP请求传递,因此您必须转换。您是否在自己的服务器上生成JSON?从(string)转换为(int)可能更容易在服务器上而不是在客户端上。我认为最好的解决方案是服务器为您的数字提供正确的格式。@Qualcuno是的,我完全控制了表和PHP。如何将其转换为数字?@Coop只是不要将其括在引号中。顺便说一句,使用(int)$string比调用intval()更快。(也因为没有调用函数的开销)您的答案实际上是正确的,但很明显,您是尽快编写的,并且在这里没有最大限度地发挥AngularJS的功能(甚至,您在AngularJS中编写了一个糟糕的实践,这可能会导致代码部分出现混乱的不一致性)。在$http请求上声明将转换响应的服务比在$http.success函数上创建自定义数据更改更合适。@linial为+1。但对于Marco来说,直接在PHP端强制转换变量也是一个加号。如果是一个数字,则应将其视为一个加号,而不是一个加号string@Linial你说得对,我编辑了我的答案,这样更好。@Linial是的。但是这个答案现在非常好。它显示了两个方面的优点。(如果你不能访问后端…)
$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;
    }
});