Я просмотрел все SO и Google, но заметил, что это помогло, и я не уверен, как продолжить. У меня есть массив, который я возвращаю с php-страницы, используя echo json_encode()
, который выглядит следующим образом:
[" "," "," "," "," ",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
но я продолжаю получать Unexpected token o at Object.parse (native)
, когда я пытаюсь использовать JSON.parse() и Unexpected token o at Function.parse (native)
, когда я использую альтернативу JQuery.
но когда я просто присоединяю его к $scope
, я могу распечатать его, используя на странице, так что я делаю неправильно и как могу исправить это?
это мой контроллер
function myController($scope, memberFactory) {
response = memberFactory.getMonth("2013-08-01 06:30:00");
//$scope.response = response;
var monthDays = $.parseJSON(response);
var dates = [];
for (var i = 0; i < monthDays.length; i++) {
if (i % 7 == 0) dates.push([]);
dates[dates.length - 1].push(monthDays[i]);
}
$scope.dates = dates;
//
}
это мой метод обслуживания:
obj.getMonth = function (date) {
var month = $q.defer();
$http.get('getMonth.php?date=' + date)
.success(function (data, status, headers, config) {
month.resolve(data);
});
return month.promise;
}
и это мой php:
<?php $daysOfMonth=[ " ", " ", " ", " ", " ",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
echo json_encode($daysOfMonth); ?>
Вещи, которые я пробовал
Если я возвращаю typeof
, я получаю Object, поэтому я попробовал var monthDays = Array.prototype.slice.call(response)
и var monthDays = $.map(response, function (value, key) { return value; });
, как это предложено в некоторых ответах здесь, я также попробовали JSON.stringify()
, но я просто получил {}
в качестве результата
Я действительно расстроен тем, что мне действительно нужно, чтобы кто-то указал мне в правильном направлении
Update
Я считаю, что это может быть проблемой при использовании $q.defer()
, поскольку я обновляю свой метод getMonth следующим образом:
obj.getMonth = function (date) {
var month = $q.defer();
$http.get('getMonth.php?date=' + date)
.success(function (data, status, headers, config) {
month.resolve(data);
console.log("data " + data[0]);
console.log("resolved " + month.promise[0]);
});
return month.promise;
}
теперь я получаю 1
для console.log("data " + data[0]);
, как и ожидалось, но я получаю для console.log(month);
Я получаю [object Object]
для console.log(month.promise)
Я получаю [object Object]
и для console.log(month.promise[0]);
получаю undefined