当我使用 ionic 从 IOS 设备发送数据时,PHP 错误地接收到数据

Posted

技术标签:

【中文标题】当我使用 ionic 从 IOS 设备发送数据时,PHP 错误地接收到数据【英文标题】:PHP receives the data incorrectly when I send it from an IOS device using ionic 【发布时间】:2019-04-17 12:41:54 【问题描述】:

我有一个问题,我从运行在 android 设备上的 ionic 应用发送数据:

从应用程序发送到后端的数据

我在我的 php 后端收到这些数据,如下所示:

我从安卓设备的 php 后端收到的数据

此数据发送和接收正常,但是,当我从 ios 设备接收相同数据时遇到问题,我收到这样的数据:

我从 ios 设备的 php 后端收到的数据

你有解决这个问题的办法吗?我该如何管理这些数据?我可以将这些数据转换成另一种格式来使用吗?

谢谢:)

编辑:

我的 ionic 应用程序中的代码:

 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 中转换数据:

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

编辑:

经过大量搜索,我发现这是一个离子错误或类似的错误,因为我尝试在 ios 和 android 上再次构建应用程序并且问题消失了,但有时当我再次构建应用程序时再次出现,我没有知道为什么会这样

【问题讨论】:

我建议你以 JSON 格式发送数据 请阅读How to Ask。您只向我们展示了一些数据应该是什么样子的屏幕截图,对于找出问题/原因可能是什么并没有真正的帮助。至少向我们展示您收集和发送这些数据的代码。 首选代码作为文本而不是图像。谢谢。 @RiggsFolly 我已经将它作为 JSON 进行了处理 @misorude 我更新了问题以放置我的一些代码:) 【参考方案1】:

为了更好地回答为什么会发生这种情况(以及如何“修复它”),需要生成该数据的代码。 另一个与正确回答相关的问题是 iOS 数据是否一致(总是相同的结构)。 也就是说,可以做的是一些简单的数据管理/清理; 创建一个函数来处理来自设备的数据并强制执行您需要的任意数据结构。 有多种方法可以做到这一点,一种是拥有数据结构的模板,并在接收到的数据中递归查找值。即使数据结构发生变化,这也会起作用,但如果键发生变化则不会。 我建议在发布问题之前做一些研究。

【讨论】:

您好 Manuel,感谢您的回答,发送数据的代码是:var camposRequeridos=IDVisita: this.reparto.IDVisita, Expedicion: this.albaranes; this.communicate.postRecogida(camposRequeridos);

以上是关于当我使用 ionic 从 IOS 设备发送数据时,PHP 错误地接收到数据的主要内容,如果未能解决你的问题,请参考以下文章

当我从 ios ionic 应用程序休息时,响应状态为:0 的 URL:null

BLE 在将数据从 iOS 7.1 发送到 iOS 8 时花费了太多时间

离子中的 apns 错误设备令牌

ionic 3 支持的最低 iOS 版本是多少?

从 appery 发送时,iPhone 上未收到推送通知消息

Ionic Firebase 推送通知问题