Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中创建JSON对象(带数组)_Php_Json - Fatal编程技术网

在php中创建JSON对象(带数组)

在php中创建JSON对象(带数组),php,json,Php,Json,我试图创建包含数组的JSON对象。我想通过AJAX获取JSON,最初: $.ajax({ url: 'data/events.json', type: 'GET', }) 但我把这个改成 $.ajax({ url: 'data/events.php', type: 'GET', }) 我需要的JSON如下所示: { "events": [ { "month": "6", "day": "12", "year": "2016",

我试图创建包含数组的JSON对象。我想通过AJAX获取JSON,最初:

$.ajax({
    url: 'data/events.json',
    type: 'GET',
})
但我把这个改成

$.ajax({
  url: 'data/events.php',
  type: 'GET',
})
我需要的JSON如下所示:

{
  "events": [
  {
    "month": "6",
    "day": "12",
    "year": "2016",
    "title": "Lorem ipsum",
    "description": "desc..."
  },
  {
    "month": "6",
    "day": "9",
    "year": "2016",
    "title": "Lorem ipsum",
    "description": "desc..."
  }
  ]
}
我试过:

$events = array(
    "events" => array(
        array(
            "month"=> "6",
            "day"=> "12",
            "year"=> "2016",
            "title"=> "Lorem ipsum",
            "description"=> "desc.."
        ),
        array(
            "month"=> "6",
            "day"=> "9",
            "year"=> "2016",
            "title"=> "Lorem ipsum",
            "description"=> "desc..."
        )
    )
);

echo json_encode($events);

但这是行不通的。提前谢谢你

我认为您的数组还可以,但在ajax中,请尝试:

数据类型:“json”:这将把您的响应转换为json对象


我认为您的阵列还可以,但在ajax中,请尝试:

数据类型:“json”:这将把您的响应转换为json对象


由于接受的答案没有解释,我将提供一些信息。在最初的示例中,您有一个静态的
.json
文件,当Web服务器提供该文件时,它将自动显示
应用程序/json
内容类型。但是,在php示例中,Web服务器将不提供JSON内容类型

如果jQuery检测到JSON内容类型,它将自动解析响应JSON。这就是为什么您的php示例与原始示例不完全相同,即使JSON内容本身是相同的

正如Neeraj所建议的,您可以通过设置
dataType
来强制内容类型。或者,您可以在php中发送JSON头,它将复制您的原始示例。设置相关的内容类型是一种很好的做法,因此我建议即使您正在设置
数据类型
,也要这样做

header('Content-Type: application/json');
echo json_encode($events);

由于接受的答案没有解释,我将提供一些信息。在最初的示例中,您有一个静态的
.json
文件,当Web服务器提供该文件时,它将自动显示
应用程序/json
内容类型。但是,在php示例中,Web服务器将不提供JSON内容类型

如果jQuery检测到JSON内容类型,它将自动解析响应JSON。这就是为什么您的php示例与原始示例不完全相同,即使JSON内容本身是相同的

正如Neeraj所建议的,您可以通过设置
dataType
来强制内容类型。或者,您可以在php中发送JSON头,它将复制您的原始示例。设置相关的内容类型是一种很好的做法,因此我建议即使您正在设置
数据类型
,也要这样做

header('Content-Type: application/json');
echo json_encode($events);

在ajax中得到的响应是什么?除非我遗漏了什么,否则代码会给出JSON…?在ajax中得到的响应是什么?除非我遗漏了什么,否则代码会给出JSON…?这是个问题。谢谢这是个问题。谢谢