javascript - 如何在使用 ajax 时将 javascript 对象传递给 PHP 文件

标签 javascript object serialization

我有一个 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);

在通过解码过程之前,它将尝试从引号中删除斜杠。

http://php.net/manual/en/function.json-decode.php

关于javascript - 如何在使用 ajax 时将 javascript 对象传递给 PHP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092725/

相关文章:

php - "iterate"单个对象或 php 对象的索引等价物

scala - 如何存储纯scala代码

javascript - 使用 JSON.stringify() 时出现循环原因的 TypeError

javascript - Angularjs 和 Intel XDK 不能很好地混合

javascript - 是否可以在 iFrame 中使用 JavaScript 获取 iFrame 父页面的 referrer?

javascript - 使用 lodash 查找深度重复值的对象键

javascript - 从嵌套数组中获取一行,将值插入输入,然后 setTimeout 更改为下一个数组?

c# - 在 C# 中,如何序列化 Queue<>? (.Net 2.0)

javascript - 合并两个 jQuery 对象

javascript - 在 stub 函数之后它仍然调用真正的函数