Javascript CSS选择器无法使用jQuery工作

Javascript CSS选择器无法使用jQuery工作,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,项目说明如下: 创建一个简单的网页应用程序,允许用户输入一个或多个股票代码和 显示这些股票的价格信息。 •数据必须来自RESTAPI(),可以自由使用并返回JSON 格式化输出 这是到目前为止我的代码,我还没有弄明白它 更新 当用户键入符号时,它不会在控制台上显示任何内容。如何使用户输入的每个符号都从url获取价格并给出价格 $(文档).ready(函数(){ $('searchstock')。在('click',function()上{ 让requestData=$('search').va

项目说明如下: 创建一个简单的网页应用程序,允许用户输入一个或多个股票代码和 显示这些股票的价格信息。 •数据必须来自RESTAPI(),可以自由使用并返回JSON 格式化输出


这是到目前为止我的代码,我还没有弄明白它
更新 当用户键入符号时,它不会在控制台上显示任何内容。如何使用户输入的每个符号都从url获取价格并给出价格

$(文档).ready(函数(){
$('searchstock')。在('click',function()上{
让requestData=$('search').val();
让resultElement=$('stock');
//向RESTAPI发出请求
$.ajax({
网址:'https://www.alphavantage.co/query?function=BATCH_STOCK_QUOTES&symbols=“+requestData+”&apikey=SB1CZMKQ6Q5283QZ',
方法:“get”,
数据:{
符号:请求数据
},
数据类型:“json”,
成功:功能(数据){
控制台日志(数据);
html('price:'+data.Stock_Quotes[0])
}
});
});
});

股票
输入符号

输入符号以获取价格


获得价格

您希望此行与id属性设置为“搜索”的输入匹配:

jQuery select函数需要一个作为其第一个参数。现在在您的代码中,您为
$
函数提供的CSS选择器是
'search'
,这实际上意味着“请匹配名称为“search”的元素”,而不是“匹配id属性设置为“search”的元素”。
你看到区别了吗

只需更改
$('search').val()
$('#search').val()正如
#
告诉匹配“id”属性一样

这一行也是如此

let resultElement = $('stock');

您还有一个属性名称问题
查询“MSFT”将返回如下结果:

{
  // …
  "Stock Quotes": [
    {
      "1. symbol": "MSFT",
      "2. price": "93.0300",
      "3. volume": "--",
      "4. timestamp": "2018-03-02 15:59:59"
    }
  ]
}
如您所见,数据对象属性称为“股票报价”,而不是将其放入代码中时的
Stock\u Quotes

由于属性名称包含空格,因此访问此条目需要方括号表示法。检索第一个结果的价格如下所示:


resultElement.html('price:'+data[“Stock Quotes”][0][“2.price”])

如果希望在用户键入符号时执行搜索/ajax调用,请尝试使用oninput而不是onclick

$('search')。在('input',函数(e)上{
var resultElement=$(“#股票”),
requestData=$(this.val();
//向RESTAPI发出请求
$.ajax({
网址:'https://www.alphavantage.co/query?function=BATCH_STOCK_QUOTES&symbols=“+requestData+”&apikey=SB1CZMKQ6Q5283QZ',
方法:“get”,
数据:{
符号:请求数据
},
数据类型:“json”,
成功:功能(数据){
控制台日志(数据);
html('price:'+数据[“股票报价”][0][“2.price”])
}
});

});好的,那么你的问题是什么?“无法解决”-解决什么?发生了什么?预期的行为是什么?它不起作用,所以你看到我没有看到的任何NUG吗?或者您是否有其他/更好的方法来执行此操作?我已更新了我的问题。请不要编辑您的问题以删除实际问题。这被认为是“故意破坏”。另外,请不要编辑代码来“修复”它,因为这样答案就没有意义了。@ryan我已经编辑了我的答案。这是一个琐碎的调试,深入了解文档将帮助您对这里发现的问题感到更舒服。如果您的问题已解决,请注意通过勾选对您帮助最大的答案,将您的问题设置为已解决。哦我是唯一的答案@ryan我建议您更改的内容将使您的代码正常工作。1-替换id属性
“搜索”
→ <代码>“#搜索”
“股票”
→ <代码>“#股票”
,2-将行
resultElement.html(…)
替换为
resultElement.html('price:'+数据[“股票报价”][0][“2.price”])
。3-重新运行代码段,用“MSFT”和voilá填充输入。4-勾选答案。首先,既然您的初始问题已经解决,您应该通过勾选我的答案将其标记为已解决。
“股票报价”
是一个对象数组。所以你所要做的就是使用。例如,在每次迭代中,您可以在表中创建一个
元素。在文本字段中填入
MSFT,FB
{
  // …
  "Stock Quotes": [
    {
      "1. symbol": "MSFT",
      "2. price": "93.0300",
      "3. volume": "--",
      "4. timestamp": "2018-03-02 15:59:59"
    }
  ]
}