如何将PHP数组转换为JSON数组?

如何将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

更新:根据这里的建议,我修改了代码。为了弄清楚这是如何工作的,我只想用JSON提醒PHP数组。仍然无法让它工作。下面的代码位于同一test.php页面上。如果刷新,是否应触发警报?这个功能似乎也失败了。测试警报不起作用

<?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”
,如果您将