进行get请求时是否可以将对象作为参数之一传递?

时间:2018-11-28 17:33:16

标签: ajax http http-get http-request-parameters

我有一个像这样的参数值:

user = {id: 1, name="tester", age="23"}

我可以将整个对象作为HTTP.GET请求中的参数之一传递吗?如果是,该如何在邮递员中对其进行测试?

1 个答案:

答案 0 :(得分:1)

您可以使用不同的方式-PHP的serialize函数:

$user = array(
    "id" => 1,
    "name" => "tester",
    "age" => 23
);

echo serialize($user);
echo '</br>';
echo var_dump(unserialize($_GET['user']));

哪个会导致呼叫网址:

?user=a:3:{s:2:%22id%22;i:1;s:4:%22name%22;s:6:%22tester%22;s:3:%22age%22;i:23;}

或者您可以简单地json_encode对象:

$user = array(
    "id" => 1,
    "name" => "tester",
    "age" => 23
);

echo json_encode($user);
echo '</br>';
var_dump(json_decode($_GET['user']));

哪个会导致呼叫网址:

?user={"id":1,"name":"tester","age":23}

只要URL中的参数安全,这将起作用。如果不确定是否会这样,可以urlencode参数:

$user = array(
    "id" => 1,
    "name" => "tester",
    "age" => 23
);

echo urlencode(json_encode($user));
echo '</br>';
var_dump(json_decode(urldecode($_GET['user'])));

这将导致编码的URL:

?user=%7B%22id%22%3A1%2C%22name%22%3A%22tester%22%2C%22age%22%3A23%7D

PHP仅在这里用作示例-但是json和urlencoding在当今几乎所有使用的语言中都可用。