Javascript PHP json_decode从字符串返回null

Javascript PHP json_decode从字符串返回null,javascript,php,json,Javascript,Php,Json,现在我正在做一个应用程序,它将Google Maps中的一系列坐标保存到一个隐藏的输入中,然后我从表单中获取数据到PHP,它输出ok,但当我尝试读取字符串并解码JSON时,它返回NULL 现在这是我的Javascript代码: var bounds = []; var bound = {}; polygon.getPaths().forEach(function(punto, indice){ punto.forEach(function(puntoX, indice){

现在我正在做一个应用程序,它将Google Maps中的一系列坐标保存到一个隐藏的输入中,然后我从表单中获取数据到PHP,它输出ok,但当我尝试读取字符串并解码JSON时,它返回NULL

现在这是我的Javascript代码:

var bounds = []; 
var bound = {};
polygon.getPaths().forEach(function(punto, indice){
     punto.forEach(function(puntoX, indice){
           bound = {'lat': puntoX.lat(), 'lng': puntoX.lng()};
           bounds.push(bound);

     });
});
$('#bounds').val(JSON.stringify(bounds));
HTML代码:

<form class="signup-block" method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]) . "?c=create"; ?>">
<button id="save" class="button success disabled" type="submit" disabled>Crear Geocerca</button>
<br>
<h3>Datos de la geocerca</h3>
<label for="nombre">Nombre de la geocerca:</label>
<input type="text" id="nombre" name="nombre" required />
<label for="tipo">Tipo de geocerca:</label>
<input type="text" id="tipo" name="tipo" readonly />
<div id="registro"></div>
<input id="bounds" type="hidden" name="bounds" />
我已经检查过,$bounds变量得到了值,但它无法将它们作为JSON读取,我做错了什么

这是两个var_转储的输出 $bounds的输出

string(408) "[{"lat":-2.1581795660883976,"lng":-79.90096002817154},{"lat":-2.171559596852916,"lng":-79.9018183350563},{"lat":-2.176448424731824,"lng":-79.89057451486588},{"lat":-2.1662419064644722,"lng":-79.88053232431412},{"lat":-2.156206859267206,"lng":-79.8930636048317},{"lat":-2.15835110569104,"lng":-79.90164667367935}]"
$coords的产出

NULL
您可以尝试以下方法:
jsondecode($bounds,true)

如果其他人与我处于相同的情况,问题是HTML输出会将所有的“and”打印为HTML实体,因此首先必须这样做

$bounds = html_entity_decode($bounds);
$coords = json_decode($bounds, true);
echo var_dump($coords);

我花了很长时间以不同的方式分析页面输出

这段代码无法重现:试试这个@AlexanderO'Mara它似乎是在从输入中获取值时发生的POST@rjdown它输出错误语法O.O,但是这个JSON是用javascript的JSON.stringify生成的,我会编辑这个问题来显示生成的HTML,你确定吗你发布的输出就是你得到的?这很奇怪,看看这里:字符串'[{“lat”:-2.1581795660883976,“lng”:-79.90096002817154},{“lat”:-2.171559596852916,“lng”:-79.9018183350563},{“lat”:-2.176448424731824,“lng”:-79.89057451486588},{“lat 2.16624190644722”,“lng”:-79.8805232432},{“:-2.15835110569104,“lng:-79.90164667367935}]”(长度=312)替换“wiht”,您可以打开ini集合(“显示错误”,“打开”);错误报告(全部);
若要查看发生了什么,我该如何替换它?它是用JSON从Javascript生成的。Stringify抱歉,我不熟悉Javascript,因为数据来自表单,函数.serializeArray()或.serialize()可能会有所帮助。(jquery函数)…最坏的情况是,您可以用php代码替换“替换”,例如substr\u replace()那完全没有道理。HTML与输入值无关,也与POST数据编码无关。我不相信这是你的实际问题,除非这里有更多的故事。嗯,也许,但我尝试了utf8编码等其他东西。只有当我在另一个文件上以纯文本输出的形式打印时,我才注意到“打印为%quote或类似内容的字符”您是如何打印的?首先,使用浏览器的开发人员工具检查实际发送到服务器的数据。如果实际表单数据中包含HTML实体,则问题出在JavaScript中。如果不是这样,那么服务器端确实在不必要地损坏您的数据。
NULL
$bounds = html_entity_decode($bounds);
$coords = json_decode($bounds, true);
echo var_dump($coords);