将两个数组回应到Angular?

时间:2016-03-21 07:49:01

标签: javascript php angularjs

我遇到一些麻烦,从ajax请求返回两个数组,并通过PHP返回角度,要么工作正常但不返回两者似乎很奇怪。尝试将两个数组放在一个数组中,但这会产生空响应或只是“数组”的响应。

这是我的PHP代码:

    $outp["arrayinarray"] = "$array";
    $outp["arrayinarray2"] = "$result";
    print_r(json_encode($outp));

我的JS:

$scope.go = function(EmailAccountId) {
    $scope.id = EmailAccountId;
        $http({
      method  : 'POST',
      url     : 'search_hand.php',
      data    : $scope.id,
      headers : {'Content-Type': 'application/x-www-form-urlencoded'} 
     })
      .then(function (response) {
        $scope.formData = {};
        $scope.formData.selectedServices = {};
        console.log("response data " + response.data);
        $scope.searchForm = true; 
        $state.go(nextState($state.current.name));
        }, function(error) {
          console.log("ERROR!");
          console.log(error);
        }
    );
};

这背景是一个简单的搜索和编辑应用程序。注册后,可以从服务器中选择一个文件,该文件使用简单的glob函数来选择文件。因为它是一个多步骤形式,所以用于构建此选择的PHP似乎在angular初始化之后发生,因此总是设置为“default”。

所以我试图重写代码并让Angular根据glob的响应重复这些文件,但由于数据库选择也在这个搜索函数中,它似乎就好了。

为什么我不能在不破坏代码的情况下返回两个数组?

我的控制台只是说“对象对象”,如果返回两个,但如果其中一个被回显/打印回来,将正确显示每个对象。

2 个答案:

答案 0 :(得分:2)

通常在执行object.toString()时显示Object Object。因此,在您的情况下,您将获得具有两个数组的json对象,并且您尝试以错误的方式访问它。所以尝试打印到像while(!s1.isEmpty() && currTree > s1.peek()) { s1.pop(); count++; } 这样的控制台。

答案 1 :(得分:0)

获取响应后需要解析json。假设你编码如下:

 $outp["data"] = $array;
 $outp["status"] = 1;
 print_r(json_encode($outp));

比你需要解码和访问这样:

.then(function (response) {
        console.log("response data " + response.data);
        var obj = jQuery.parseJSON(response);
        console.log(obj.status)
        console.log(obj.data)