我需要发送像php这样的对象
$obj = [
array('id' => '111');
];
作为POST请求参数。我试着用
[{struct,[{<<"id">>,<<"111">>},{<<"id">>, <<"222">>}]}]
[{struct,[{"id","111"}]}]
[{struct,[{"id":"111"}]}]
[{struct,[{"id"=>"111"}]}]
[[{"id","111"}]]
[{"id":"111"}]
[{"id"=>"111"}]
,但它是错误的。我试图用"
代替",但这也是错误的。我在用户手册中找不到任何关于使用数组或对象的例子。有人遇到过这个问题吗?
使用方括号构建查询字符串,然后对其进行URL编码。
查询字符串示例:
someArray[someindex_1][name]=blah&someArray[someindex_1][id]=123&someArray[someindex_2][name]=bah blah&someArray[someindex_2][id]=456
发送编码字符串作为post请求的主体。这将导致服务器上出现如下所示的数组:
print_r($_POST['someArray']);
// array(
// "someindex_1" => array(
// "name" => "blah"
// "id" => 123
// )
// "someindex_2" => array(
// "name" => "blah blah"
// "id" => 456
// )
//);
你可以在POST请求中使用HTML元素名加上方括号"[]"来发送数组。下面是一个例子:
<input type="text" name="countries[]" value="Nigeria">
<input type="text" name="countries[]" value="Ghana">
然后在PHP代码中,您可以这样检索值:
$countries = $_POST['countries']; //$countries is now an array of POST-ed countries
var_dump($countries);
但是如果你想发送的是一个对象,那么你必须序列化它。您可以使用下面的代码:
$obj = get_an_object_somehow();
$encoded_obj = base64_encode(serialize($obj));
然后在你的HTML表单中:
<input type="text" name="myObj" value="$encoded_obj">
最后,在表单处理脚本中,您可以按如下方式反序列化它:
$decoded_obj = unserialize(base64_decode($obj));//get back original object
var_dump($decoded_obj);