Php 对正确使用json的方法感到困惑
我是jquery新手,昨晚刚开始阅读json我有一个工作的ajax调用,它将简单数据传递给php脚本,处理数据并返回单个值。非常有效 我想在阅读了大量关于json的文章后,添加数组和非数组数据的来回传递!!!!但是而且json是不安全的。。。放大括号,不要放大括号-使用json解码,不要使用它,确保顶部项目是一个对象,有人说在顶部放一个“d”,有人使用序列化,有人不使用它。我必须在数据周围加上大括号吗?或者Jquery。有些人说还要添加一个指定application/json的头或其他头。。。还有人说它破坏了IE7。。。有些人说要补充Php 对正确使用json的方法感到困惑,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我是jquery新手,昨晚刚开始阅读json我有一个工作的ajax调用,它将简单数据传递给php脚本,处理数据并返回单个值。非常有效 我想在阅读了大量关于json的文章后,添加数组和非数组数据的来回传递!!!!但是而且json是不安全的。。。放大括号,不要放大括号-使用json解码,不要使用它,确保顶部项目是一个对象,有人说在顶部放一个“d”,有人使用序列化,有人不使用它。我必须在数据周围加上大括号吗?或者Jquery。有些人说还要添加一个指定application/json的头或其他头。。。还
“数据类型”:json
在ajax调用中。你明白我为什么现在感到困惑了吗
。。。而且。。。在PHP中,我还必须使用rawurldecode吗?在json解码之前,因为我的ajax URL对数据进行编码。。。太令人困惑了
我不希望这是一个比现在更大的安全漏洞。。。我想做它正确和规范。如果有一个规范
大多数人谢天谢地说。。。这是关于如何使用它(jquery、JSON)等,这使它“安全”。通过安全的。。。我是说,使用得当。客户端没有任何东西是安全的
我确信我所坚持的很简单,但在阅读了9个多小时之后,我找不到一个明确的答案。为什么制作语言(Jquery)的人不能写一个例子说。。。现在我们已经包含了json支持,下面是正确的方法
是的,我在这上面的部分有点罗嗦,因为我以前问过一些简短的问题,被否决、批评和指责没有对事情进行研究或“研究得不够深入”,而我从来没有在这里问过一个问题,没有至少5个多小时的密集阅读、浏览网站等。。通常我只在9个多小时后才来这里
…但我发现的信息是破碎的、陈旧的,而且碎片太多,我想把它做得完美!!!:)到目前为止,我找到的最好的网站是拉在闪烁的图片,但它没有显示如何正确发送,所以我离开那里很高兴地找到了文章。。。但我不知道如何将它应用到我的情况中
请查看我的代码中的注释,了解我需要的提示,请或更好-修复我的代码,以便我可以来回发送这两个数据,并使用每种语言为tmp变量赋值,以便我可以查看如何从传递的数据中提取信息?谢谢
JQUERY/JS(我的旧代码)(代码snippits)
PHP从AJAX接收(我的旧测试代码)
PHP返回
// please send any data back to the Ajax call 1 array, 1 normal data please and alert
// the data please so I can see how it's pulled back out...
return $data; // 1 array, 1 normal variable please
更多关于我的资料
- 我的网站是UTF-8编码的
- 我的数据集将在4兆以下。很可能在200k以下
- 没有跨域的事情发生
- 我有一个临时的、每页的令牌身份验证系统,它工作得很好
- 数据中可以包含哪些内容?任何东西是否有任何不应包含的符号或东西会破坏JSON代码或来回传递数据
- 还有其他提示、建议、警告吗
谢谢您的时间。不需要以JSON格式发送数据,这意味着免费包含其他库。您可以使用jQuery以数组的形式发送数据,并在PHP脚本中以数组的形式读取数据 例如:
<script type="text/javascript">
$(window).load(function(){
var myarray = new Array();
myarray.push("One");
myarray.push("Two");
myarray.push("Three");
var someOtherData = "helpmeplease";
$.ajax({
url: "../../ajax/ajax.php",
type: 'POST',
data: ({
"testarray" : myarray,
"somemoredata" : someOtherData
}),
success: function(results) {
alert(results);
}
});
});
</script>
和脚本:
<?php
// I used the same POST fields, but it can be any other data
$array = array();
$array = $_POST['somemoredata'];
$array = $_POST['testarray'];
echo json_encode($array);
?>
我没有读过整篇文章,因为它很长,但是你应该看看这个函数。确保以相同的格式(数组或json等)传递和获取变量
你的问题有点含糊。一般来说,您的问题清楚地传达了一件事:您不知道什么是JSON或如何使用它。因此,答案是“学习” 一般的回答是:JSON用于数据交换。你如何使用它将完全取决于你在任何特定情况下试图完成什么。例如: 将javascript对象编码为JSON字符串:
var myObj = {};
myObj.aString = 'a string of characters';
myObj.aList = ['a','b','c'];
var myJSON = JSON.stringify( myObj );
console.log( myJSON );
// {"aString":"a string of characters","aList":["a","b","c"]}
/*
note - the function you use varies by browser/javascript engine.
libraries (jQuery, for example) have methods that can simplify this.
*/
将JSON字符串解码为PHP数组
$myJSON = '{"aString":"a string of characters","aList":["a","b","c"]}';
$myArray = json_decode( $myJSON,true );
print_r( $myArray );
/*
Array
(
[aString] => a string of characters
[aList] => Array
(
[0] => a
[1] => b
[2] => c
)
)
*/
好的。首先,考虑JSON最简单的方法是JavaScript对象的序列化表示(或者是一组n维、关联/非关联数组,如果您在PHP中更容易思考的话) 例如,在PHP中,您可以执行以下操作:
$albums = array( array( "title" => "Dark Side of the Moon",
"artist" => "Pink Floyd",
"tracklist" => array( "Speak to Me", "Breathe", "..." ) ),
array( "title" => "Ten",
"artist" => "Pearl Jam",
"tracklist" => array( "Once", "Even Flow", "..." ) )
);
您可以以更紧凑的方式在JavaScript中执行相同的操作,如:
var albums = [
{
title : "Dark Side of the Moon",
artist : "Pink Floyd",
tracklist : [ "Speak to Me", "Breathe", "..." ]
}, {
title : "Ten",
artist : "Pearl Jam",
tracklist : [ "Once", "Even Flow", "..." ]
}
];
这两件事完全一样。JSON将序列化数组和对象的集合,使其看起来几乎与JavaScript实现完全相同 注意1:下面的每个双引号都应该转义,但我真的不想手动转义
注意2:根据标准,整个过程可能是一个单行双引号字符串,但在这里这样做会破坏语法突出显示,我认为您将从中获得更多 正如您所看到的,JSON并不真正需要任何模式,除了您自己创建的模式,以满足您的特殊需要。
在这里,我有一系列的专辑。每个专辑都有一个
标题
一个艺术家
和一个曲目列表
,这是一组歌曲标题。
如果应用程序许可,您可以将tracklist
转换为track
对象数组,每个对象都有自己的歌曲标题和持续时间,并链接到歌词或.mp3或任何您希望它执行的操作
因为我使用的是对象的索引数组(我不需要在我的相册集合中为每个相册指定一个关联名称-索引数组可以容纳它们),所以JSON字符串被包装在方括号中,与JS数组的包装方式相同(JS数组仅为索引)
与XML相比,它确实是轻量级的
如果你
> http://php.net/manual/en/function.json-encode.php
> http://www.php.net/manual/en/function.json-decode.php
> http://api.jquery.com/jQuery.parseJSON/
var myObj = {};
myObj.aString = 'a string of characters';
myObj.aList = ['a','b','c'];
var myJSON = JSON.stringify( myObj );
console.log( myJSON );
// {"aString":"a string of characters","aList":["a","b","c"]}
/*
note - the function you use varies by browser/javascript engine.
libraries (jQuery, for example) have methods that can simplify this.
*/
$myJSON = '{"aString":"a string of characters","aList":["a","b","c"]}';
$myArray = json_decode( $myJSON,true );
print_r( $myArray );
/*
Array
(
[aString] => a string of characters
[aList] => Array
(
[0] => a
[1] => b
[2] => c
)
)
*/
$albums = array( array( "title" => "Dark Side of the Moon",
"artist" => "Pink Floyd",
"tracklist" => array( "Speak to Me", "Breathe", "..." ) ),
array( "title" => "Ten",
"artist" => "Pearl Jam",
"tracklist" => array( "Once", "Even Flow", "..." ) )
);
var albums = [
{
title : "Dark Side of the Moon",
artist : "Pink Floyd",
tracklist : [ "Speak to Me", "Breathe", "..." ]
}, {
title : "Ten",
artist : "Pearl Jam",
tracklist : [ "Once", "Even Flow", "..." ]
}
];
[{"title":"Dark Side of the Moon","artist":"Pink Floyd","tracklist":["Speak to Me","Breathe","..."]},
{"title":"Ten","artist":"Pearl Jam","tracklist":["Once","Even Flow","..."]}]
{"title":"For the Record","artist":"Nerds with Guitars","tracklist":["Sympathy for the Daleks","Hero","Stereotypical"]}
var dataArr = JSON.parse(response),
dataObj = dataArr[0]; //only object in array
displayTracklist(dataObj);