Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 值为.split的Angular.forEach上的错误不是函数_Angularjs - Fatal编程技术网

Angularjs 值为.split的Angular.forEach上的错误不是函数

Angularjs 值为.split的Angular.forEach上的错误不是函数,angularjs,Angularjs,我想获取$HTTP的响应并将其映射到一个空对象。这是我试过的 主代码 function myData( myUrl) { $http({ method: 'POST', url: "http://localhost:8085/api/foo", data: $scope.myUrl, }) .then( funct

我想获取$HTTP的响应并将其映射到一个空对象。这是我试过的

主代码

function myData( myUrl) {
         $http({
                method: 'POST',
                 url: "http://localhost:8085/api/foo",
                data: $scope.myUrl,     
        })
         .then(
            function successCall(response) {
                $scope.resultForRecord=response;
                $scope.obj=[];
                angular.forEach(response,function (valueToObj,key) {
                $scope.obj.push(
                    {'key' : $scope.resultForRecord.toString().split("=")[0],'value' : $scope.resultForRecord.toString().split("=")[1]})});
                        console.log($scope.obj);
            },
            function errorCall(response) {                            
                console.log(response);
                $scope.resultForRecord=response;
            });
        }
错误为valueToObj。拆分不是一个函数

现在我已经尝试了硬编码的练习演示。效果很好。这是演示

演示:


我怎样才能解决这个问题?提前感谢

。拆分需要一个字符串

您正在使用..对数组进行迭代

valueToObj.split
这假设每次迭代时,valueToObj都是一个字符串。但是,如果它不是字符串,那么函数将不存在,并且您将得到此错误。这是因为split函数只存在于字符串上

angular.forEach(response, function(valueToObj, key) {
  $scope.obj.push(
    {
      'key' : $scope.resultForRecord.toString().split("=")[0],
      'value' : $scope.resultForRecord.toString().split("=")[1]
    }
  );
});
我重新格式化了你的代码,让它更清晰

阅读该代码:

  • 您正在迭代
    response
    的所有字段
    response
    是HTTP响应对象,它有4个字段:状态(数字)、标题、数据和配置。实际上,您希望迭代作为响应(
    response.data
    )的主体发送的JSON对象的元素
  • 您甚至没有对函数中的当前元素执行任何操作。您不是将
    值拆分为bj
    ,而是拆分
    $scope.resultForRecord.toString()
    。因此,您将同一个内容拆分多次,这是整个HTTP响应的字符串表示形式
  • 您最可能想要的是:

    angular.forEach(response.data, function(element) {
      $scope.obj.push(
        {
          'key' : element.split("=")[0],
          'value' : element.split("=")[1]
        }
      );
    });
    
    或者,清洁剂:

    $scope.obj = response.data.map(function(element) {
      var parts = element.split("=");
      return {
        key: parts[0],
        value: parts[1]
      };
    });
    

    您的代码不完整,因此我们不得不猜测。我的猜测是,您希望分割作为HTTP响应数据的数组的每个元素。但是您要分割HTTP响应对象的每个值(状态、头、数据等)。只需使用调试器,或记录响应的值,就会有所帮助。您似乎已经这样做了,但您也没有发布日志。对此,我深表歉意
    $scope.obj = response.data.map(function(element) {
      var parts = element.split("=");
      return {
        key: parts[0],
        value: parts[1]
      };
    });