我遇到一些麻烦,从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的响应重复这些文件,但由于数据库选择也在这个搜索函数中,它似乎就好了。
为什么我不能在不破坏代码的情况下返回两个数组?
我的控制台只是说“对象对象”,如果返回两个,但如果其中一个被回显/打印回来,将正确显示每个对象。
答案 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)