Включение PHP внутри файла JSON

1

У меня есть файл JSON, загруженный таким образом (он отображает бизнес-список в Google Map):

    var _latitude = 40.4379543;
var _longitude = -3.6795367;
var jsonPath = 'assets/json/items.json.php';

// Load JSON data and create Google Maps

$.getJSON(jsonPath)
    .done(function(json) {
        createHomepageGoogleMap(_latitude,_longitude,json);
    })
    .fail(function( jqxhr, textStatus, error ) {
        console.log(error);
    })
;

И 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
    }
]
}

Он работает нормально, но если я включаю циклы, он терпит неудачу:

{
"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
    }
}
?>
    ]
}

Журнал консоли:

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, это не подведет?

  • 0
    Можете ли вы включить сгенерированный JSON, или, по крайней мере, чтобы убедиться, что сгенерированный JSON кажется действительным?
  • 2
    Создайте массив PHP и используйте функцию json_encode (). Не пишите JSON самостоятельно. И }, <?php - проблема, без запятой после последнего значения в массиве в JSON.
Показать ещё 3 комментария
Теги:

2 ответа

2

попробуйте этот путь. использовать json_encode()

items.json.php

<?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);
?>
  • 0
    Привет, таким образом, "{" data ": [" в начале удален? Я сделал это, как вы написали, и у меня была та же ошибка: SyntaxError: Неожиданный токен <
  • 0
    используйте этот echo json_encode(array("data"=> $google_data));
Показать ещё 1 комментарий
0

Это не удалось, потому что в начале файла появляется ошибка. Я забыл потребовать файл конфигурации в этом файле.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню