在JSON文件中包含PHP

在JSON文件中包含PHP,php,json,Php,Json,我有一个以这种方式加载的JSON文件(它将一个业务列表引用到Google地图中): items.json.php包含以下内容: { "data": [ { "id": <?php echo 1; ?>, "category": "real_estate", "title": "<?php echo "q"; ?>", "location": "<?php echo "a"; ?>",

我有一个以这种方式加载的JSON文件(它将一个业务列表引用到Google地图中):

items.json.php包含以下内容:

{
"data": [
    {
        "id": <?php echo 1; ?>,
        "category": "real_estate",
        "title": "<?php echo "q"; ?>",
        "location": "<?php echo "a"; ?>",
        "latitude": 51.541599,
        "longitude": -0.112588,
        "url": "item-detail.html",
        "type": "Apartment",
        "type_icon": "assets/icons/store/apparel/umbrella-2.png",
        "rating": 4,
        "gallery":
            [
                "assets/img/items/1.jpg",
                "assets/img/items/5.jpg",
                "assets/img/items/4.jpg"
            ],
        "features":
            [
                "Free Parking",
                "Cards Accepted",
                "Wi-Fi",
                "Air Condition",
                "Reservations",
                "Teambuildings",
                "Places to seat"
            ],
        "date_created": "2014-11-03",
        "price": "$2500",
        "featured": 0,
        "color": "",
        "person_id": 1,
        "year": 1980,
        "special_offer": 0,
        "item_specific":
            {
                "bedrooms": 4,
                "bathrooms": 2,
                "rooms": 4,
                "garages": 1,
                "area": 240
            },
        "description": "asasasas odio nibh, luctus non pulvinar a, ultricies ac diam. Donec neque massa, viverra interdum eros ut, imperdiet pellentesque mauris. Proin sit amet scelerisque risus. Donec semper semper erat ut mollis. Curabitur suscipit, justo eu dignissim lacinia, ante sapien pharetra duin consectetur eros augue sed ex. Donec a odio rutrum, hendrerit sapien vitae, euismod arcu.",
        "last_review": "Curabitur odio nibh, luctus non pulvinar a, ultricies ac diam. Donec neque massa, viverra interdum eros ut, imperdiet",
        "last_review_rating": 5
    }
]
}
{
“数据”:[
{
“id”:,
“类别”:“不动产”,
“名称”:“名称”,
“地点”:“,
“纬度”:51.541599,
“经度”:-0.112588,
“url”:“item detail.html”,
“类型”:“公寓”,
“类型图标”:“资产/图标/商店/服装/雨伞-2.png”,
“评级”:4,
“画廊”:
[
“资产/img/items/1.jpg”,
“资产/img/items/5.jpg”,
“资产/img/items/4.jpg”
],
“特点”:
[
“免费停车”,
“接受信用卡”,
“Wi-Fi”,
“空调”,
“保留”,
“团队建筑”,
“座位”
],
“创建日期”:“2014-11-03”,
“价格”:“$2500”,
“特色”:0,
“颜色”:“,
“个人识别码”:1,
“年份”:1980年,
“特别优惠”:0,
“特定项目”:
{
“卧室”:4间,
“浴室”:2,
“房间”:4,
“车库”:1,
“面积”:240
},
“说明”:"如奥迪奥·尼布(odio nibh)、非普尔文纳(luctus non pulvinar a)、尤里西斯(ultricies ac diam)、多涅克·马萨(Donec neque massa)、维韦拉(viverra interdum eros ut)、佩伦特·莫里斯(Imperent Pellent mauris)、阿梅特·斯克利斯(Proin at amet scelerisque risus)、莫利斯(Donec semper semper erat ut mollis)、库拉比特(Curabit suscipit)、拉齐亚(justo Equinsis)、拉齐亚(justo lacinia)、圣贤(ante sapien Phn vitae,euismod arcu.“,
“最后一次回顾”:“库拉比托·奥迪奥·尼布、非普尔文纳的卢克图斯、ultricies ac diam.Donec neque massa、维韦拉·interdum eros ut、帝国饮食”,
“最后一次审查评级”:5
}
]
}
它工作正常,但如果包含循环,则会失败:

{
"data": [
<?php
    $qtodos = $mysqli->query("SELECT * FROM negocios");
    if($qtodos->num_rows != 0) {
    while($todos = $qtodos -> fetch_assoc()) {
?>
        {
            "id": <?php echo $todos['idnegocios']; ?>,
            "category": "real_estate",
            "title": "<?php echo $todos['nombre']; ?>",
            "location": "<?php echo $todos['direccion']; ?>",
            "latitude": 51.541599,
            "longitude": -0.112588,
            "url": "item-detail.html",
            "type": "Apartment",
            "type_icon": "assets/icons/store/apparel/umbrella-2.png",
            "rating": 4,
            "gallery":
                [
                    "assets/img/items/1.jpg",
                    "assets/img/items/5.jpg",
                    "assets/img/items/4.jpg"
                ],
            "features":
                [
                    "Free Parking",
                    "Cards Accepted",
                    "Wi-Fi",
                    "Air Condition",
                    "Reservations",
                    "Teambuildings",
                    "Places to seat"
                ],
            "date_created": "2014-11-03",
            "price": "$2500",
            "featured": 0,
            "color": "",
            "person_id": 1,
            "year": 1980,
            "special_offer": 0,
            "item_specific":
                {
                    "bedrooms": 4,
                    "bathrooms": 2,
                    "rooms": 4,
                    "garages": 1,
                    "area": 240
                },
            "description": "asasasas odio nibh, luctus non pulvinar a, ultricies ac diam. Donec neque massa, viverra interdum eros ut, imperdiet pellentesque mauris. Proin sit amet scelerisque risus. Donec semper semper erat ut mollis. Curabitur suscipit, justo eu dignissim lacinia, ante sapien pharetra duin consectetur eros augue sed ex. Donec a odio rutrum, hendrerit sapien vitae, euismod arcu.",
            "last_review": "Curabitur odio nibh, luctus non pulvinar a, ultricies ac diam. Donec neque massa, viverra interdum eros ut, imperdiet",
            "last_review_rating": 5
        },
<?php
    }
}
?>
    ]
}
{
“数据”:[
{
“id”:,
“类别”:“不动产”,
“名称”:“名称”,
“地点”:“,
“纬度”:51.541599,
“经度”:-0.112588,
“url”:“item detail.html”,
“类型”:“公寓”,
“类型图标”:“资产/图标/商店/服装/雨伞-2.png”,
“评级”:4,
“画廊”:
[
“资产/img/items/1.jpg”,
“资产/img/items/5.jpg”,
“资产/img/items/4.jpg”
],
“特点”:
[
“免费停车”,
“接受信用卡”,
“Wi-Fi”,
“空调”,
“保留”,
“团队建筑”,
“座位”
],
“创建日期”:“2014-11-03”,
“价格”:“$2500”,
“特色”:0,
“颜色”:“,
“个人识别码”:1,
“年份”:1980年,
“特别优惠”:0,
“特定项目”:
{
“卧室”:4间,
“浴室”:2,
“房间”:4,
“车库”:1,
“面积”:240
},
“说明”:如奥迪奥·尼布(odio nibh)、非普尔文纳(luctus non pulvinar a)、尤里西斯(ultricies ac diam)、多涅克·马萨(Donec neque massa)、维韦拉(viverra interdum eros ut)、佩伦特·莫里斯(Imperent Pellent mauris)、阿梅特·斯克利斯(Proin at amet scelerisque risus)、莫利斯(Donec semper semper erat ut mollis)、库拉比特(Curabit suscipit)、拉齐亚(justo Equinsis)、拉齐亚(justo lacinia)、圣贤(ante sapien Phn vitae,euismod arcu.“,
“最后一次回顾”:“库拉比托·奥迪奥·尼布、非普尔文纳的卢克图斯、ultricies ac diam.Donec neque massa、维韦拉·interdum eros ut、帝国饮食”,
“最后一次审查评级”:5
},
]
}
控制台日志如下所示:

SyntaxError: Unexpected token <
at Object.parse (native)
at o.parseJSON (http://localhost/Proyectos/directorio/assets/js/jquery-2.1.0.min.js:4:4701)
at e.parseJSON (http://localhost/Proyectos/directorio/assets/js/jquery-migrate-1.2.1.min.js:2:2943)
at vc (http://localhost/Proyectos/directorio/assets/js/jquery-2.1.0.min.js:4:6789)
at x (http://localhost/Proyectos/directorio/assets/js/jquery-2.1.0.min.js:4:10194)
at XMLHttpRequest.o.ajaxTransport.l.cors.a.crossDomain.send.b (http://localhost/Proyectos/directorio/assets/js/jquery-2.1.0.min.js:4:14159)
SyntaxError:意外标记<
at Object.parse(本机)
在o.json(http://localhost/Proyectos/directorio/assets/js/jquery-2.1.0.min.js:4:4701)
在e.json(http://localhost/Proyectos/directorio/assets/js/jquery-migrate-1.2.1.min.js:2:2943)
在vc(http://localhost/Proyectos/directorio/assets/js/jquery-2.1.0.min.js:4:6789)
在x(http://localhost/Proyectos/directorio/assets/js/jquery-2.1.0.min.js:4:10194)
在XMLHttpRequest.o.ajaxTransport.l.cors.a.crossDomain.send.b(http://localhost/Proyectos/directorio/assets/js/jquery-2.1.0.min.js:4:14159)

我的问题是:为什么如果我包含一个循环,它会失败,如果我包含一个简单的PHP回显,它不会失败?

试试这种方法。使用json\u encode()

items.json.php



它失败了,因为文件开头出现错误。我忘了在这个文件中需要de-config文件。

您可以包含生成的json,或者至少确保生成的json看起来有效吗?创建一个PHP数组并使用函数json\u encode()。不要自己写JSON。
},响应似乎是无效的JSON(似乎包含
听@OIS-我只是想重申一下他说的话,以强化他的建议:不要自己写JSON。这将为你做一件更好、更简单、更快的工作。如果你需要
JSON\u encode()
objects,看一看
JsonSerializable
接口(尽管您不需要它,但考虑到上面的示例,最好了解一下)。另外,
可能没有引号…所以,是的,只是重申一下,不要自己使用JSON。我觉得应该有一篇关于这类问题的参考文章,上面说,
使用JSON_encode()
…嗨,这样,“{”数据“:[“beggining的被删除了?我是按照你写的那样做的,并且出现了相同的错误:SyntaxError:意外标记使用此
echo json_编码(数组(“数据”=>$google_数据));
似乎不是问题所在。仍然出现相同的错误:SyntaxError:U
SyntaxError: Unexpected token <
at Object.parse (native)
at o.parseJSON (http://localhost/Proyectos/directorio/assets/js/jquery-2.1.0.min.js:4:4701)
at e.parseJSON (http://localhost/Proyectos/directorio/assets/js/jquery-migrate-1.2.1.min.js:2:2943)
at vc (http://localhost/Proyectos/directorio/assets/js/jquery-2.1.0.min.js:4:6789)
at x (http://localhost/Proyectos/directorio/assets/js/jquery-2.1.0.min.js:4:10194)
at XMLHttpRequest.o.ajaxTransport.l.cors.a.crossDomain.send.b (http://localhost/Proyectos/directorio/assets/js/jquery-2.1.0.min.js:4:14159)
<?php
$qtodos = $mysqli->query("SELECT * FROM negocios");
if($qtodos->num_rows != 0) {
    while($todos = $qtodos -> fetch_assoc()) {
        $google_data = array(
            "id"=> $todos['idnegocios'],
            "category"=> "real_estate",
            "title"=> $todos['nombre'],
            "location"=> $todos['direccion'],
            "latitude"=> 51.541599,
            "longitude"=> -0.112588,
            "url"=> "item-detail.html",
            "type"=> "Apartment",
            "type_icon"=> "assets/icons/store/apparel/umbrella-2.png",
            "rating"=> 4,
            "gallery"=>array(
                "assets/img/items/1.jpg",
                "assets/img/items/5.jpg",
                "assets/img/items/4.jpg"),
            "features"=>
            .....
            ..
    );
    }
}

echo json_encode($google_data);
?>