为什么我的整数对象在post方法后自动转换为字符串

Why does my integer object automatically convert to string after post method?

本文关键字:转换 字符串 方法 整数 我的 对象 post 为什么      更新时间:2023-09-26

我有一个对象将我的数字转换成字符串。我已经做了相当多的谷歌试图找出为什么会发生这种情况,但我仍然不确定-我认为这可能与JSON或标题信息在post方法?所以,我的下一个尝试是将对象转换回整数。我看到了几个选项:parseInt(), Number(), split('"'),但没有解决我的问题。

后:rootScope美元。fullDay = {我:"1",星期二:"2"}

我需要它的格式如下:之前帖子:

rootScope美元。fullDay = {我的:1、2}

编辑:值不在引号中,如下所示:

 <li class="col-md-3">
     <input type="checkbox" id="Monday" ng-true-value= 1 ng-model="day.mon" ng-change="selectedDay()">
   <label class="ui-checkbox" for="Monday">Monday</label>
</li>                                            
 <li class="col-md-3">
     <input type="checkbox" id="Tuesday" ng-true-value= 2 ng-model="day.tue" ng-change="selectedDay()">
    <label class="ui-checkbox" for="Tuesday">Tuesday</label>

JS文件:

$scope.selectedDay = function () {
    if (!$rootScope.edit) {
    console.log($scope.day) 
      $rootScope.fullDay = $scope.day;                 
      $rootScope.day = Object.keys($scope.day).map(key => $scope.day[key]);
      $rootScope.day.forEach(function (item, index) {
        if (item === false) {
          $rootScope.day.splice(index, 1);
        }
      });
      $rootScope.dayFormatted = $rootScope.day.join(' ');          
      $rootScope.schedule.weekdays.day['@'].day = $rootScope.dayFormatted;
    }

POST(仅包括部分):

 createJob_API: function () {
            var data = $.param({"fullDay": $rootScope.fullDay, "fullDate": $rootScope.fullDate})
     var settings = {
                method: 'POST',
                data: data,
                headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },

这是POST之前的控制台日志的图像:https://i.stack.imgur.com/2yl9d.jpg后:https://i.stack.imgur.com/MgB27.jpg注意:第二个img只是一个例子,输出的日期与前一个图像不同。

谢谢你的帮助-如果有人能告诉我为什么转换会自动发生,我会很感激。

application/x-www-form-urlencoded只支持键=值对。它不区分不同的数据类型。它只支持字符串

(它的非标准扩展在键名中使用[]字符来表示数组和对象,但是没有区分字符串和数字的任何东西)。

如果您想要一个数字,那么您必须在数据到达服务器后将其转换为该格式。

通过将它们放在引号中,将它们存储为字符串,如果您像这样存储它们:

var obj = {
  mon: 1,
  tue: 2
};

你会发现那个对象。Mon是整型,不是字符串

我可以用以下方法解决我的问题:

Object.keys($rootScope.edit.fullDay).forEach(function(key,value){
      $rootScope.edit.fullDay[key] = parseInt($rootScope.edit.fullDay[key]);