我需要发送像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"}]
但这是错误的。
我试图取代&#34;由"
提出,但也是错误的。
我在用户手册中找不到有关使用数组或对象的任何示例。有人面对这个问题吗?
答案 0 :(得分:0)
使用方括号构建查询字符串,然后对其进行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
// )
//);
答案 1 :(得分:0)
您可以使用带有方括号&#34; []&#34;的HTML元素名称在POST请求中发送数组。一个例子如下所示:
<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);
但是,如果你要发送的是一个Object,那么你必须序列化它。您可以使用以下代码:
$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);