通过POST方式将PHP中的JSON编码变量传递到Javascript中

41 浏览
0 Comments

通过POST方式将PHP中的JSON编码变量传递到Javascript中

我有一个多维数组,我想用JavaScript发送到一个解析JSON数据并在Google地图上绘制的PHP脚本中。我正在尝试使用表单来模拟它:

 array(
        'plate_no' => 'abc111',
        'longlat' => array(121.003895,14.631563),
        'info' => '第一项'
        ),
    1 => array(
        'plate_no' => 'abc222',
        'longlat' => array(121.103895,14.731563),
        'info' => '第二项'
        )
    );
$jsonarray = json_encode($jsontest);
?>

json-target.php的内容如下:


$_POST的输出结果是Array ( [jsonarray] => [{ )。我想将$jsonarray变量的内容传递给一个JavaScript函数(请参见下面的更新)。

更新:我还有一个简单的JavaScript代码,用于解析从$_POST接收到的值并通过alert()显示:

 

但输出结果带有反斜杠字符。

var json = JSON.parse([{\"plate_no\":\"abc111\",\"longlat\":[121.003895,14.631563],\"info\":\"first item\"},{\"plate_no\":\"abc222\",\"longlat\":[121.103895,14.731563],\"info\":\"second item\"}]);

有更好的方法吗?

0
0 Comments

问题的出现原因:在PHP中,将JSON编码的变量传递给JavaScript的时候,可能会出现一些问题。具体来说,本例中的问题是无法正确地将JSON编码的变量从PHP传递给JavaScript的POST方法。

解决方法:要解决这个问题,可以尝试以下步骤:

1. 首先,确保在PHP中正确编码变量为JSON格式。可以使用json_encode()函数来完成这一步骤。

2. 在JavaScript中,使用POST方法将JSON编码的变量从PHP传递给JavaScript。可以使用jQuery的$.post()函数来发送POST请求。

3. 在JavaScript中,使用JSON.parse()函数将接收到的JSON编码的变量转换为JavaScript对象。

4. 最后,使用转换后的JavaScript对象来访问相应的属性或值。

下面是一个示例代码,演示了如何通过POST方法将JSON编码的变量从PHP传递给JavaScript:

PHP代码:

$variable = array(
    "plate_no" => array("ABC123", "DEF456", "GHI789")
);
$json = json_encode($variable);

JavaScript代码:

$.post("example.php", function(data) {
    var json = JSON.parse(data);
    alert(json.plate_no[0]);
});

以上代码中,PHP代码将一个包含车牌号的变量编码为JSON格式,并通过POST方法传递给JavaScript文件。在JavaScript代码中,使用$.post()函数发送POST请求,并将接收到的JSON编码的数据转换为JavaScript对象。最后,通过访问转换后的JavaScript对象的属性,获取到第一个车牌号并弹出一个对话框显示出来。

希望以上解决方法对你有所帮助!

0
0 Comments

问题的原因是需要将PHP中的JSON编码的变量传递给JavaScript。在这种情况下,$_POST数组被用来从表单中接收数据。然而,当JSON字符串被传递给JavaScript时,它包含了转义字符,因此需要用stripslashes函数来去除这些转义字符。

解决方法是使用JSON.parse函数将JSON字符串解析为JavaScript对象。在这个例子中,使用了PHP中的echo函数将$_POST数组中的jsonarray变量传递给JavaScript。然后,使用JSON.parse函数将JSON字符串解析为JavaScript对象,并将其赋值给名为json的变量。

下面是完整的解决方法的代码示例:

var json = JSON.parse(<?php echo stripslashes($_POST['jsonarray']) ?>);

通过这种方法,我们可以成功将PHP中的JSON编码的变量传递给JavaScript,并在JavaScript中将其解析为对象。

0
0 Comments

问题出现的原因是:当将一个JSON编码的变量输出到HTML的value属性中时,引号会与标记干扰,需要进行转义才能放入HTML中。

解决方法是:使用htmlspecialchars函数对JSON编码的字符串进行转义,然后将转义后的字符串输出到HTML的value属性中。

另外,根据更新内容,使用JSON.parse解析已经通过json_encode在PHP中编码的变量是不必要的,因为json_encode输出的结果已经是一个合法的JavaScript对象。如果需要在JavaScript中使用,直接输出json_encode的结果即可。

另外,如果在$_POST数组输出中发现转义斜杠,可能是由于magic_quotes_gpc指令开启的原因。此时需要使用stripslashes函数对$_POST变量进行反转义。

原文内容如下:

JSON编码使用了大量的引号。当将一个JSON编码的字符串直接输出到HTML的value属性中时,引号会与标记干扰。为了解决这个问题,需要对字符串进行转义才能放入HTML中。可以尝试以下代码:


另外,根据你的更新内容,我不确定你的JSON.parse的用法是什么意思。在PHP中使用json_encode编码的任何内容都是合法的JavaScript对象,不需要进一步解析。例如,如果有一个名为$obj的对象,其中有一个name属性为'hello',可以像下面这样使用:


这样会弹出一个提示框,显示'hello'。json_encode的输出已经是一个合适的JavaScript对象。

如果在$_POST数组的输出中发现转义斜杠,可能是由于magic_quotes_gpc指令开启的原因。在这种情况下,需要使用stripslashes函数对$_POST变量进行反转义。

谢谢!我能够在json-target.php中获取输出了,但是现在JSON对象被破坏了。我是否使用了正确的方法?

0