我正在处理一个个人项目,在这个项目中我要获取一个特定的JSON文件(RESTful API)。 然后,用户输入他们想要的任何东西,然后它将返回一个特定的值(比如价格)。
下面是我的代码:
// FETCH JSON
fetch('http://phisix-api4.appspot.com/stocks.json')
.then(response => {
return response.json()
})
.then(data => {
console.log(data)
var data = JSON.parse(this.response)
})
.catch(err => {
// Do something for an error here
})
从标题为“Fetch JSON”的代码中,我成功地从web服务器获取了数据。 我可以用控制台记录数据。
下一个activity是用户在HTML输入框中键入名称。 我的代码应该将用户键入的内容存储到变量中。 我在这方面也很成功。 请看我的代码。
// USER INPUT NAME
function getUserTick() {
var x = document.getElementById('stocktickerinput').value;
}
现在(这里)问题是,使用变量x
,我试图通过以下代码搜索JSON响应:
var obj = data
for (var i = 0; i <= 243; i++){
// look for the entry with a matching `code` value
if (obj.stock[i].name == x){
console.log('hey, i found it!')
}
}
我找不到返回正确的值。 看来在搜索数据时循环的代码都是错误的。
在此查看我的小提琴:https://jsfiddle.net/c3x16d5s/1/
我不确定应该对JSON响应做什么,以及如何搜索用户输入。 有谁能帮忙吗?
通常,在脚本的较高位置启动变量是保证访问后续函数的可靠方法。 我做了一些假设,因为我实际上看不到对象
的结构,也看不到x
的值,尽管您的语法看起来是正确的。 检查看看这是否有效!
let x = document.getElementById('stocktickerinput').value;
let obj;
fetch('http://phisix-api4.appspot.com/stocks.json')
.then(response => {
return response.json()
})
.then(data => {
console.log(data)
obj = JSON.parse(data)
})
.catch(err => {
// Do something for an error here
})
function getUserTick() {
for (let i = 0; i <= 243; i++){
// look for the entry with a matching `code` value
if (obj.stock[i].name == x){
console.log('hey, i found it!')
}
}
}
getUserTick()
编辑:做了一些迭代-弄乱了obj
变量,但这应该可以工作。 如果没有,告诉我!
您可以使用filter方法循环遍历您的数据并获取json数据的特定内容。
所以你可以键入this而不是for循环。
const result = obj.stock.filter(stock => stock.name == x)
if (result) {
console.log("Found it")
}