我使用ajax调用从Googles地方api检索数据,我使用for / in循环开始提取信息。我正在寻找的信息记录到控制台,但我不能让它以数组的形式显示我想要它。
现在我在请求名称时获取名称列表,这是JSON对象中的参数。有没有办法让它进入一个数组,所以我可以随机选择数组中的一个值?
此时它返回我的数据的方式,当我运行一个脚本来拉随机字符串时,它会在搜索我的JSON对象时从最后一个值中拉出一个随机字母。
这是我的代码。不确定我是否清楚地解释了自己,但这是我能说出我想做的最好的事情。感谢。
// **GLOBAL VARIABLES** //
// Chosen Restaurant display area
var display = document.getElementById('chosenVenue');
// Grab button
var button = document.getElementById('selectVenue');
// Sample Array that gets queried
var venueData = ["McDonalds", "Burger King", "Wendys"];
// Grab JSON data from Google
$(document).ready(function(){
$.ajax({
url: 'hungr.php', // Send query through proxy (JSONP is disabled for Google maps)
data: { requrl: "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=40.7484,-73.9857&radius=800&sensor=false&keyword=restaurants,food&key=AIzaSyBkCkXIHFjvqcqrRytSqD7T_RyFMNkR6bA&callback=?"}, // URL to query WITH parameters
dataType: "json",
type: "GET", // or POST if you want => update php in that case
success: function (data) {
// Traverse the array using for/in loop using i as var
for (var i in data.results) {
var results = data.results[i];
var nameResults = results.name;
console.log(nameResults);
var typesResults = results.types;
console.log(typesResults);
var vicinityResults = results.vicinity;
console.log(vicinityResults);
};
// On button click, randomly display item from selected array
button.addEventListener('click', function () {
console.log('clicked');
display.style.display = 'block';
//display.innerHTML = nameResults[Math.floor(Math.random() * nameResults.length)];
display.innerHTML = nameResults.toString() + "<br />" + vicinityResults.toString();
});
console.log('It is working');
},
error: function (request, status, error) {
console.log('It is not working');
}
});
});
答案 0 :(得分:0)
现在我在请求名称时获取名称列表,这是JSON对象中的参数。有没有办法让它进入一个数组,所以我可以随机选择数组中的一个值?
使用push
方法和非局部变量:
this.nameResults = this.nameResults ? this.nameResults.push(results.name) : [];
然后用Math.random
方法引用它:
this.randName = function(){ return this.nameResults[Math.random() * this.nameResults.length | 0] };
<强>参考强>