1

更新: URL を次のように更新しました。

scriptIWrote/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);

ただし、「json_decode」を単に「array」に置き換えると、実際には $_GET['nums'] を文字列のように扱い、それでも機能しません


だから私は次のように、私が書いているAPIのURLで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

考えられる問題がいくつかあります。最初[の と]は、URL で予約されている一般的な区切り文字です。それらを使用したい場合は、パーセントでエンコードする必要があります。

2 番目[frank,bob]は有効な JSON ではありません。これらの値を二重引用符で囲む必要があります。

URL に JSON を渡しているという話は聞いたことがありません。これはよく考えられていないように思えます。

于 2013-03-22T05:18:41.133 に答える
0

最後にそれを理解しました:

URL:

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 に答える