Javascript 将HTTP请求中的所有变量视为整数(例外)
我在Angular中有一个HTTP请求,它从Mysql表中提取所有数据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",
$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;
}
});