1

更新:我已将我的网址更新为以下内容:

脚本IWrote/1111/%5B%7B%93num%94%3A%93NX543%20.c38%202000%94%7D%2C%7B%93num%94%3A%93NX543%20.c38%202000%94%7D%5D .json

它给出了这样的数组:(当我使用 print_r($_GET['nums']) 时)

[{“num”:“NX543 .c38 2000”},{“num”:“NX543 .c38 2000”}]

这是有效的 JSON,但没有通过以下行解码:

$callNums = json_decode($_GET['nums'], true);

但是,仅用“array”替换“json_decode”实际上会将 $_GET['nums'] 视为字符串并且仍然不起作用


所以我试图通过 URL 为我正在编写的 API 传递 JSON 数组,如下所示:

scriptIWrote/1111/[0000,0000].json

我的 htaccess 规则设置如下:

RewriteCond %{THE_REQUEST} GET
RewriteRule ^scriptIWrote/([^/]+)/([^/]+)(?=.json) root/scriptIWrote/doThing.php?type=$1&names=$2 [L,QSA]

但是,当我打印出参数中包含的内容时,如下所示:

$names = json_decode($_GET['nums'], true);
//array of sheet values
$type = $_GET['type'];


error_log($names[0] . $nums[1]);
error_log($type);

$nums[0] 和 $nums[1] 为空,但 $type 显示正确的值;我知道我在我的 htaccess 中犯了一个错误,但我不确定我做错了什么......

4

2 回答 2

0

终于想通了:

网址:

scriptIWrote/1111/%5B%22NX543%20.c38%202000%22%2C%22NX543%20.c38%202000%22%5D.json

PHP:

$nums = json_decode(stripslashes($_GET['nums']), true);
于 2013-03-22T14:20:06.673 回答
0

我看到了几个可能的问题。首先是 URL[]保留的通用分隔符。如果你想使用它们,它们需要进行百分比编码。

其次[frank,bob]是无效的 JSON。您需要在这些值周围加上双引号。

我从未听说过有人在 URL 中传递 JSON。这似乎是一个考虑不周的想法。

于 2013-03-22T05:18:41.133 回答