我有一个 javascript 对象,我想在使用 jQuery 的 ajax 实现时将其传递给 PHP 文件。
我试图直接将它传递给它,但这不起作用,因为它没有转义或其他任何东西。我试过使用 JSON.stringify 但这对我也不起作用。
有没有办法将 javascript 对象“序列化”为 POST 字符串?
更新,我再次使用 JSON.stringify()。结果是:
JSON.stringify() 的结果是:
{\"label\":\"Borne, Overijssel, Nederland\",\"value\":\"Borne, Overijssel, Nederland\",\"geocode\":{\"address_components\":[{\"long_name\":\"Borne\",\"short_name\":\"Borne\",\"types\":[\"locality\",\"political\"]},{\"long_name\":\"Borne\",\"short_name\":\"Borne\",\"types\":[\"administrative_area_level_2\",\"political\"]},{\"long_name\":\"Overijssel\",\"short_name\":\"OV\",\"types\":[\"administrative_area_level_1\",\"political\"]},{\"long_name\":\"Nederland\",\"short_name\":\"NL\",\"types\":[\"country\",\"political\"]}],\"formatted_address\":\"Borne, Nederland\",\"geometry\":{\"bounds\":{\"ca\":{\"b\":52.2832527,\"f\":52.3151634},\"ea\":{\"b\":6.688658900000064,\"f\":6.801415300000031}},\"location\":{\"Ya\":52.3002366,\"Za\":6.753725799999984},\"location_type\":\"APPROXIMATE\",\"viewport\":{\"ca\":{\"b\":52.2832527,\"f\":52.3151634},\"ea\":{\"b\":6.688658900000064,\"f\":6.801415300000031}}},\"types\":[\"locality\",\"political\"]}}
当我执行 json_decode
时,结果为 NULL。有什么建议吗?
最佳答案
如果您将对象作为合法 JSON 格式的字符串传递给 PHP,请尝试使用
json_decode()
在 php 方面。示例
<?php
$ojb = json_decode($_POST['my_json_string']);
?>
这将根据您使用的 PHP 版本将您的对象转换为数组或对象,在某些情况下,该对象将转换为包含多个对象的数组。示例:
Array(
[0] stdClass (
'key1'=>'val1'
'key2'=>'val2'
'key3'=>'val3'
)
)
我知道上面的表示不是很好,但它是其中一行的表示。
在 PHP 端之后,您可以像使用任何其他数组/对象一样使用变量 $ojb
。
$something = $ojb[0]->key1;
编辑 我现在注意到你的字符串。引号在字符串中被转义的事实打破了它是一个 JSON 对象的事实,你可以做两件事之一..要么只是通过你的 post/get 将对象传递给 PHP,而不是运行它strigify 或者.. 如果需要 strigfy 的话,你可以尝试在 PHP 端..
$ojb = stripslashes($_POST['my_json_string']); $ojb = json_decode($ojb);
在通过解码过程之前,它将尝试从引号中删除斜杠。
关于javascript - 如何在使用 ajax 时将 javascript 对象传递给 PHP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092725/