2

json配列をphppostリクエストに送信しようとしています。

$myarray[] = 500;
$myarray[] = "hello world";

$ myarray jsonデータをphppostリクエストに送信するにはどうすればよいですか?

これが私が試したことです:

<form name="input" action="post.php">
<input type="hidden" name="json" value="[500,'hello world']" />
<input type="submit" value="Submit">
</form>

APIをテストしていて、jsonデータのみが必要であると言われました...しかし、それを機能させることができないようです。私の推測では、JSONデータを間違って送信しています。何かご意見は?

4

2 に答える 2

3

あなたが持っている問題は、この文字列が適切なJSONではないことです。[500,'hello world']

これは適切なJSON[500,"hello world"]です。JSONはフォーマットに非常に厳密であり、すべての文字列値を二重引用符で囲む必要があり、一重引用符は使用しないでください。

問題を回避するために行うべき適切なことは、php関数json_encode()json_decode()

例えば、

<?php
    $myarray[] = 500;
    $myarray[] = "hello world";
    $myjson = json_encode($myarray);
?>
<form name="input" action="post.php">
    <input type="hidden" name="json" value="<?php echo $myjson ?>" />
    <input type="submit" value="Submit">
</form>

そしてpost.phpであなたはそれをそのように読むでしょう、

<?php
    $posted_data = array();
    if (!empty($_POST['json'])) {
        $posted_data = json_decode($_POST['json'], true);
    }
    print_r($posted_data);
?>

trueフラグjson_decode()は、デフォルトの動作であるPHPオブジェクトではなく、連想配列として関数に指示します。

このprint_r()関数は、変換されたJSON配列のphp構造を出力します。

Array(
    [0] => 500
    [1] => hello world
) 
于 2012-11-07T01:06:54.363 に答える
1

APIはサードパーティですか、それともあなたが作成したものですか?

それがあなたのものである場合、あなたのフォームによって送信されたデータを消費することはあなたのAPIでこれと同じくらい単純でなければなりません:

<?php
    $data = json_decode($_REQUEST['json']);

    echo $data[0]; // Should output 500
    echo $data[1]; // Should output hello world

サードパーティの場合、おそらく彼らはあなたがポストボディでjsonを送信することを期待しています。これを実現するには、次の投稿に従ってください:curlを使用してJSONをPHPに投稿する方法

于 2012-11-07T01:03:02.720 に答える