我有一个以这种方式加载的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 :(得分: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);
?>
答案 1 :(得分:0)
失败,因为文件开头出现错误。我忘了在这个文件中要求de config文件。