PHP неправильно получает данные, когда я отправляю их с устройства IOS с использованием ионной - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть проблема, я отправляю данные из моего ионного приложения, работающего на устройстве Android:

Данные отправляются из приложения на сервер

enter image description here

Я получаю эти данные на моем PHP-бэкэнде так:

Данные, которые я получаю в PHP-бэкэнде от устройства Android

enter image description here

Эти данные отправлены и получены в порядке, но у меня возникла проблема, когда я получаю те же данные с устройства ios, я получаю данные, подобные этим:

Данные, которые я получаю в phpбэкэнд с устройства ios

enter image description here

Есть ли у вас какие-либо решения этой проблемы?как я могу управлять этими данными?можно ли преобразовать эти данные в другой формат, чтобы использовать их?

Спасибо:)

РЕДАКТИРОВАТЬ:

Код в моем ионном приложении:

 var camposRequeridos={IDVisita: this.reparto.IDVisita, Expedicion: this.albaranes}; //this.albaranes is an array with 1 or more objects

 this.communicate.postRecogida(camposRequeridos);

Код в comunicate.ts

export class CommunicateProvider {
  private defaultHeaders = {"Content-Type": "application/json"};

  constructor(public http:HTTP,
            private auth: AuthProvider) {
    this.http.setDataSerializer('json');
  }

  get(URL, params, headers){
    let signedHeaders = this.auth.signRequest(headers);
    return this.http.get(URL, params, signedHeaders);
  }

  post(URL, params, headers){
    let signedHeaders = this.auth.signRequest(headers);
    return this.http.post(URL, params, signedHeaders);
  }

   postRecogida(camposRequeridos){
     return this.http.post(SERVER_URL + '/Recogida', camposRequeridos, this.auth.signRequest(this.defaultHeaders));
   }
}

В api-call.php в случае, если метод post:

case 'POST':
        {
            parse_str($var, $POST);
            $_POST = array_merge((array)$_POST, (array)$POST);
            break;
        }

И в recogida.php iпреобразовать данные, если я получу строку:

if(isset($_POST['Expedicion'])){
   if(is_string($_POST['Expedicion'])){
      $expediciones = json_decode($_POST['Expedicion'], true);
   }else{
      $expediciones = $_POST['Expedicion'];
   }
}else{
   $expediciones = array();
}

РЕДАКТИРОВАТЬ:

После долгих поисков я обнаружил, что это ионная ошибка или что-то подобное, потому что япопробуйте собрать приложение снова в ios и на android, и проблема исчезнет, ​​но иногда появляется снова, когда я снова собираю приложение, я не знаю, почему это происходит

1 Ответ

0 голосов
/ 14 ноября 2018

Чтобы дать лучший ответ относительно того, почему это происходит (и как «исправить это»), потребуется код, который генерирует эти данные.Другой вопрос, относящийся к правильному ответу на этот вопрос, заключается в том, соответствуют ли данные iOS (всегда одинаковая структура).
Тем не менее, то, что можно сделать, это простое управление / очистка данных;Создайте функцию, которая обрабатывает данные, поступающие с устройств, и обеспечивает произвольную структуру данных, которая вам нужна.Есть несколько способов сделать это, один из них - иметь шаблон структуры данных, и рекурсивно искать значения в полученных данных.это сработает, даже если структура данных изменится, но не при изменении ключей.
Я бы посоветовал провести небольшое исследование, прежде чем отправлять вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...