1

我通过一些值从 android/java 发送到服务器。

首先我创建一个 JSONArray 对象:

JSONArray JSONsamples = new JSONArray();

然后我按以下方式填充 JSONArray:

 for(.....)
                {
                    if(...)
                    {
                      JSONsamples.put(storedArraylist.get(i));
                    }
                }

然后我通过 post 发送值:

userParameters.add(new BasicNameValuePair("samples", JSONsamples.toString()));
.
.
Http_Client.executeHttpPost(getApplicationContext(), POST_url, userParameters);
.

然后在服务器上,我尝试将这些值存储到 php 数组中,但它不起作用:

 $samplesarray = $_POST["samples"];
 $samplesarray = json_decode($samplesarray,true);

在解码之前,如果我回显 $samplesarray ,我只会得到封装在这些 \"value\" 中的第一个值,在 json_decode 之后,当我回显 $samplesarray 时,我得到一个预期的参数,但发现空值错误。

请帮忙。

4

2 回答 2

1

Magic Quotes 应该关闭,因为它会\在您的"值之前添加一个。这会破坏您的情况下的 json 数据。

请阅读更多关于为什么你不应该在这里使用magicquotes:http: //php.net/manual/en/security.magicquotes.whynot.php

于 2013-09-12T11:32:22.777 回答
0

解决方案是删除魔术引号,或者至少检查它是否打开并从那里开始工作。@steven 让我想起了这一点,谢谢。

所以在服务器端,我做了以下检查以确保正确的 json 并且它可以工作:

$samplesarray = get_magic_quotes_gpc() ? stripslashes($_REQUEST['samples']) : $_REQUEST['samples'];
于 2013-09-12T11:32:47.723 回答