Угловой анализ HTTP $ POST JSON с PHP

0

В моем мобильном, угловом приложении я пытаюсь отправить объект JSON на сервер для дальнейшей обработки.

Это мой JSON

$sessionsString = {"ojoijoj":[{"station":"AABB","height":80,"period":"20","gsh":"1.11","gsp":"20","gsd":"225","wsh":"1.11","wsp":"5.3","wsd":"270","dt":"2015-07-08T00:00:00.000Z","station2":"9410230","windStrength":"3.6","windDirection":"220","tideHeightInCM":115.06811989101},{"station":"CCBB","height":90,"period":"10","gsh":"1.7","gsp":"10","gsd":"207.5","wsh":"2.7","wsp":"9.9","wsd":"207.5","dt":"2015-07-16T21:00:00.000Z","station":"94102302","windStrength":"3.17","windDirection":"308.502","tideHeightInCM":83.986622073579}],"y4":[{"station":"DD","height":90,"period":"15","gsh":"1.11","gsp":"15","gsd":"225","wsh":"2.3","wsp":"5","wsd":"297.5","dt":"2015-07-04T19:00:00.000Z","station2":"9410230","windStrength":"1.5","windDirection":"280","tideHeightInCM":134.37293729373}]};'

Я отправляю свой JSON через

$http.post(requestURL, {'sessions':JSON.stringify(sessions)}).
  success(function(data, status, headers, config) {
      console.log('Success');
  }).
  error(function(data, status, headers, config) {
  }); 

и фигурировал в некоторых других ссылках, что я должен получить данные через

$params = json_decode(file_get_contents('php://input'), true);

для получения параметров, а не с помощью обычного $ _POST по какой-либо причине. (Обнаружено это в других сообщениях, $ _POST не работает → это потокобезопасный путь кстати?)

Тем не менее, я хочу проанализировать данные сейчас, и это не сработает.

$sessionsString = $params['sessions'];
$sessions = json_decode($sessionsString,true);
$spotNames = array_keys($sessions); 

array_keys завершается с ошибкой, и ключи не найдены. Когда я напрямую назначаю приведенную выше строку JSON $sessionString она работает нормально. Что происходит? Я не знаю, как отлаживать это, потому что это параметр POST, который я не могу полностью увидеть, и файл, зачитанный в PHP, также может быть проблемой.

Спасибо, EL

Теги:
ionic-framework

2 ответа

2
Лучший ответ

Не стягивайте в $http просто пройти в объект. угловой позаботится о преобразовании в json

$http.post(requestURL, {sessions:sessions})...

Также первый json_decode теперь должен работать без необходимости второго

  • 0
    Интересно. Я проверяю журналы доступа / ошибок apache и сообщает, что получает два запроса. Один без параметров и один со всеми параметрами. Я запускаю только один запрос во всем приложении. Как это может быть?
  • 0
    это междоменный запрос? Даже другой порт считается междоменным. Если да, то будет также предварительный запрос OPTIONS.
Показать ещё 3 комментария
0

Похоже, вы дважды вызываете json_decode. Не знаете, почему $_POST не сработал для вас, но вы всегда можете использовать var_dump($params) чтобы увидеть, что происходит.

  • 1
    $ _POST не работает, потому что angular отправляет как application/json по умолчанию не кодирование формы, если вы не измените заголовок запроса
  • 0
    Понимаю. Это имеет смысл.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню