如何将PHP数组转换为JSON数组?
更新:根据这里的建议,我修改了代码。为了弄清楚这是如何工作的,我只想用JSON提醒PHP数组。仍然无法让它工作。下面的代码位于同一test.php页面上。如果刷新,是否应触发警报?这个功能似乎也失败了。测试警报不起作用如何将PHP数组转换为JSON数组?,php,javascript,ajax,json,Php,Javascript,Ajax,Json,更新:根据这里的建议,我修改了代码。为了弄清楚这是如何工作的,我只想用JSON提醒PHP数组。仍然无法让它工作。下面的代码位于同一test.php页面上。如果刷新,是否应触发警报?这个功能似乎也失败了。测试警报不起作用 <?php header('Content-type: application/json'); $arr = array ('item1'=>"test1",'item2'=>"test2",'item3'=>"test3"); echo js
<?php
header('Content-type: application/json');
$arr = array ('item1'=>"test1",'item2'=>"test2",'item3'=>"test3");
echo json_encode($arr);
?>
<script type="text/javascript">
$(function() {
$.getJSON('test.php',function(data) {
alert("TEST");
$.each(data, function(key, item) {
alert(key + item); });
});
});
});
</script>
我的HTML页面(test.htm):
$(函数(){
$.getJSON('test.php',函数(数据){
$。每个(数据、功能(i、项){
警报(项.键);
});
});
});
足够:
header('Content-type: application/json');
$arr = array ('item1'=>"test1",'item2'=>"test2",'item3'=>"test3");
echo json_encode($arr);
exit;
然后,$.getJSON将获得数据。这就足够了:
header('Content-type: application/json');
$arr = array ('item1'=>"test1",'item2'=>"test2",'item3'=>"test3");
echo json_encode($arr);
exit;
然后,$.getJSON将获取数据。为什么要对调用php页面的文件执行file\u get\u content() 您不应该显示它,但应该显示json数据:
$arr = array ('item1'=>"test1",'item2'=>"test2",'item3'=>"test3");
$content = json_encode($arr);
echo $content;
为什么要对调用php页面的文件执行file_get_content() 您不应该显示它,但应该显示json数据:
$arr = array ('item1'=>"test1",'item2'=>"test2",'item3'=>"test3");
$content = json_encode($arr);
echo $content;
不,那不行
<?php
header('Content-type: application/json');
$arr = array ('item1'=>"test1",'item2'=>"test2",'item3'=>"test3");
echo json_encode($arr);
?>
<script type="text/javascript">
$(function() {
$.getJSON('test.php',function(data) {
alert("TEST");
$.each(data, function(key, item) {
alert(key + item); });
});
});
});
</script>
首先,让您的php响应您的数组:
$arr = array('item1'=>"test1", 'item2'=>"test2", 'item3'=>"test3");
echo json_encode($arr);
然后调用javascript ajax函数,观察响应
<script type="text/javascript">
$(function() {
$.getJSON('test.php',function(data) {
$.each(data,function(i, item) {
alert(item.key);
});
});
});
</script>
$(函数(){
$.getJSON('test.php',函数(数据){
$。每个(数据、功能(i、项){
警报(项.键);
});
});
});
不,这样不行
<?php
header('Content-type: application/json');
$arr = array ('item1'=>"test1",'item2'=>"test2",'item3'=>"test3");
echo json_encode($arr);
?>
<script type="text/javascript">
$(function() {
$.getJSON('test.php',function(data) {
alert("TEST");
$.each(data, function(key, item) {
alert(key + item); });
});
});
});
</script>
首先,让您的php响应您的数组:
$arr = array('item1'=>"test1", 'item2'=>"test2", 'item3'=>"test3");
echo json_encode($arr);
然后调用javascript ajax函数,观察响应
<script type="text/javascript">
$(function() {
$.getJSON('test.php',function(data) {
$.each(data,function(i, item) {
alert(item.key);
});
});
});
</script>
$(函数(){
$.getJSON('test.php',函数(数据){
$。每个(数据、功能(i、项){
警报(项.键);
});
});
});
这是因为您不需要在php中调用file\u get\u contents
的最后一部分
在php上,您只需执行以下操作
$arr = array ('item1'=>"test1",'item2'=>"test2",'item3'=>"test3");
echo json_encode($arr);
在Javascript中,您将返回一个Javascript对象,一种简单的迭代键的方法是
for(var key in data)
{
alert(key + ' => ' + data[key]);
}
这是因为您不需要在php中调用
file\u get\u contents
的最后一部分
在php上,您只需执行以下操作
$arr = array ('item1'=>"test1",'item2'=>"test2",'item3'=>"test3");
echo json_encode($arr);
在Javascript中,您将返回一个Javascript对象,一种简单的迭代键的方法是
for(var key in data)
{
alert(key + ' => ' + data[key]);
}
确保在HTML文件中包含了jQuery 因为您只需要提醒键,所以不必等待dom就绪事件——即使您愿意,我也会首先获取JSON并将
$(函数…
放入ajax回调中
JSON编码的PHP数组应如下所示:
{"item1":"test1","item2":"test2","item3":"test3"}
在调试器中检查这一点,或者直接在浏览器中加载test.php。正如其他人所建议的,带有文件\u get\u contents
的php代码有点奇怪
最后,对象遍历将不起作用。请查看:
JavaScript中的字符串连接符是
+
,而不是PHP中的
。项。key
将尝试访问某个项的key
属性-没有一个项具有像您的are字符串这样的属性。请确保在HTML文件中包含jQuery
因为您只需要提醒键,所以不必等待dom就绪事件——即使您愿意,我也会首先获取JSON并将$(函数…
放入ajax回调中
JSON编码的PHP数组应如下所示:
{"item1":"test1","item2":"test2","item3":"test3"}
在调试器中检查这一点,或者直接在浏览器中加载test.php。正如其他人所建议的,带有文件\u get\u contents
的php代码有点奇怪
最后,对象遍历将不起作用。请查看:
JavaScript中的字符串连接符是
+
,而不是PHP中的
。项。key
将尝试访问某个项的key
属性-没有一个项具有像您的are字符串这样的属性。问题出在您的PHP脚本上
json_编码($arr)
没有做任何事情,变量中没有输出或保存
那么您从test.htm中得到了什么呢?您不能将两个不同的内容放在一个JSON中,稍后由$.getJSON解析,您的PHP脚本应该只输出JSON编码的内容
尝试在PHP代码上执行此操作:
$arr = array ('item1'=>"test1",'item2'=>"test2",'item3'=>"test3");
echo json_encode($arr);
在Javascript代码上执行此操作之前,请检查:
<script type="text/javascript">
$(function() {
$.get("test.php",function(data){
var obj = $.parseJSON(data);
alert("Test 1: " + obj.test1);
});
</script>
$(函数(){
$.get(“test.php”,函数(数据){
var obj=$.parseJSON(数据);
警报(“测试1:+obj.test1”);
});
问题出在您的PHP脚本上
json_编码($arr)
没有做任何事情,变量中没有输出或保存
那么您从test.htm中得到了什么呢?您不能将两个不同的内容放在一个JSON中,稍后由$.getJSON解析,您的PHP脚本应该只输出JSON编码的内容
尝试在PHP代码上执行此操作:
$arr = array ('item1'=>"test1",'item2'=>"test2",'item3'=>"test3");
echo json_encode($arr);
在Javascript代码上执行此操作之前,请检查:
<script type="text/javascript">
$(function() {
$.get("test.php",function(data){
var obj = $.parseJSON(data);
alert("Test 1: " + obj.test1);
});
</script>
$(函数(){
$.get(“test.php”,函数(数据){
var obj=$.parseJSON(数据);
警报(“测试1:+obj.test1”);
});
对于仍然迷路的人:
我使用“$.post”发送一些数据并检索信息。当使用它时,我的JSON返回就像一个字符串
解决方案:
使用第四个参数数据类型作为json
(据此)
例如:
对于那些仍然失去的人: 我使用“$.post”发送一些数据并检索信息。当使用它时,我的JSON返回就像一个字符串 解决方案: 使用第四个参数数据类型作为json (据此) 例如:
json与
“key”类似:“value”
而不是“key”=>“value”
如果将文件内容放在test.php中,则不会产生javascript所期望的json。如果将test.htm包含在test.php中,并且它调用test.php,那么它将自己加载……您仍然需要两个页面(在您的示例中)-test.htm包含
标记,jQuery包含test.php,正如刚才回答的echo
s一样,array.json类似于“key”:“value”
而不是“key”=>“value”
,如果您将