2015-07-09 13 views
1

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

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 кажется действительным? – dlegall

+2

Создайте массив PHP и используйте функцию json_encode(). Не пишите JSON самостоятельно. И '}, OIS

+0

Ответ кажется неправильным json (кажется, содержит '<'). Оформить ответ json. Если вы используете хром, то после 'getJSON' вызывается checkout вкладка sources в Developers Tools и поиск имени json файла ответа. – Kamehameha

ответ

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: Неожиданный токен < – Sergio

+0

использовать этот 'echo json_encode (array (" data "=> $ google_data));' –

+0

Кажется, это не проблема. По-прежнему появляется та же ошибка: SyntaxError: Неожиданный токен <. Кажется, что в этом json не может вводить петли. – Sergio

0

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

Смежные вопросы