在执行.post查询时,任何人都能解释json_encode的用途吗。
这是我经常在别人的编码中看到的。
.post php脚本
...
...
echo json_encode($a);
我的意思是,如果我想从.post脚本返回并通过.post返回数组,我不需要做以下操作吗?
.post php脚本
...
...
$a = array("foo", "bar", "hallo", "world");
$string=implode(',',$a) in my php script
return $string;
javascript
$.post('$url',function(data){
data_arr=data.split(',');
//After which just get the values in the array
alert(data_arr[0]); //ALERTS 'foo'
alert(data_arr[1]); //ALERTS 'bar'
});
如果有人能帮我解决这个问题,让我看到在这方面使用json的好处,那就太好了。
也许这也是由于我对JSON的不了解。
如果有人能告诉我为什么在这种情况下使用JSON编码更好,以及我应该如何通过.post请求使用它,而不是只是回显字符串并稍后拆分它,我将不胜感激。
谢谢。
使用json_encode
可确保数据始终有效。
对于你可以控制的简单数据来说,这并不重要,不过想象一下,如果有一天你在其中一个值中有一个逗号。使用JSON编码的字符串,您不必担心任意的分隔符标记。
此外,使用JSON,您可以轻松地对对象/数组进行编码,而无需重新发明轮子。
首先,在我看来和实践中,JSON语法与Javascript对象非常相似,在处理稍后必须发送/请求和解析的更复杂的数据类型时非常有用。
例如:如果您正在进行post请求,并且正在序列化服务器端验证的所有表单字段(使用PHP),那么您很可能需要使用key => value
对,如textbox_name => value
。这样做比通过数字索引选择值更合乎逻辑(如果表单布局发生变化怎么办?)
使用逗号的示例代码:
<?php
$array = array('Tom', 'Hanks', 'Football');
$string = join(',',$array);
echo $string; //it's obvious - the output is Tom,Hanks,Football
?>
接收字符串的javascript
$.post(url,{},function(data){
var values = data.split(',')
$("#name").text(values[0]);
$("#surname").text(values[1]);
$("#interests").text(values[2]);
});
所以这很有道理,对吧但这样做不是更有意义吗:
<?php
header('Content-type: application/json');
$array = array('name' => 'Tom', 'surname' => 'Hanks', 'interests' => 'Football');
echo json_encode($array);
?>
和javascript:
$.post(url,{},function(data){
for(index in data) {
$("#"+index).text(data[index]);
}
//or
$("#name").text(data.name);
$("#surname").text(data.surname);
$("#interests").text(data.interests);
});
使用Javascript解析响应数据也是如此。拥有一个对象比拥有CSV字符串更符合逻辑。
很明显,它取决于用例,但通常JSON为您提供了一个字符串化对象/数组的逻辑结构,可以将其转换回对象和数组,并以任何方式循环或操作。
JSON现在也是一种标准。每个人都使用它,这意味着它不是无缘无故的。换句话说,JSON数据更有意义。