我试图将json数组发送到php post请求。
$myarray[] = 500;
$myarray[] = "hello world";
如何将$ myarray json数据发送到php post请求?
这是我试过的:
<form name="input" action="post.php">
<input type="hidden" name="json" value="[500,'hello world']" />
<input type="submit" value="Submit">
</form>
我正在测试API并被告知它只需要json数据......但我似乎无法让它工作。我的猜测是我发送错误的json数据。有什么想法吗?
答案 0 :(得分: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
)
答案 1 :(得分:1)
API是您的第三方还是您制作的?
如果是您的,请使用您的表单发送的数据就像在API上一样简单:
<?php
$data = json_decode($_REQUEST['json']);
echo $data[0]; // Should output 500
echo $data[1]; // Should output hello world
如果是第三方,可能他们希望你在邮寄正文中发送json。要实现这一目标,请按照以下文章发表:How to post JSON to PHP with curl。