2

我试图将一个 json 数组发送到一个 php post 请求。

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

如何将 $myarray json 数据发送到 php 发布请求?

这是我尝试过的:

<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

如果是第 3 方,他们可能希望您在帖子正文中发送 json。为此,请关注这篇文章:如何使用 curl 将 JSON 发布到 PHP

于 2012-11-07T01:03:02.720 回答