【问题标题】:Javascript not working, but same code in the browser does work [duplicate]Javascript不起作用,但浏览器中的相同代码确实有效[重复]
【发布时间】:2020-07-17 21:14:37
【问题描述】:

尝试使用 JSON API 对象。我取回数据并挑选出一点并将其推送到一个名为“rxcui”的对象。第一个令人困惑的事情是我无法在浏览器中使用 console.log(rxcui),但如果我创建一个新变量并使用 rx = rxcui,那么我可以在浏览器中使用 console.log(rx) 来查看对象。

真正的问题是,当我获取包含两个数字字符串的 rx 对象并尝试将其设为数组以便我可以在它们上使用 .join 时,代码将无法运行。尝试时, Object.values(rx) 会返回一个空数组。但是,如果我进入 chrome 浏览器上的 HTML 代码并在控制台中键入相同的行,它会按预期工作,我能够获取对象,将其连接在一起,并制作我想要的字符串。

url_for_rxui.forEach((element) => {
      $(document).ready(function() {
        $.ajax({
            url: element,
            type: 'GET',
            success: function(returned){
              rxcui.push(returned.approximateGroup.candidate[0].rxcui);}
        });})})


rx = rxcui
concat_rxcui = Object.values(rx)
console.log(concat_rxcui)




rxcui_list = 'https://rxnav.nlm.nih.gov/REST/interaction/list.json?rxcuis=';
list_url = concat_rxcui.join('+')

rxcui_url_inter = rxcui_list + list_url
console.log(rxcui_url_inter)
      $(document).ready(function() {
        $.ajax({
            url: rxcui_url_inter,
            type: 'GET',
            success: function(returned){
              console.log(returned);}
        });})

这是来自浏览器控制台:

console.log(rxcui)
VM3952:1 Uncaught ReferenceError: rxcui is not defined
    at <anonymous>:1:13
(anonymous) @ VM3952:1
console.log(rx)
VM3999:1 (2) ["114228", "84815"]

任何见解将不胜感激。

【问题讨论】:

  • rxcui 没有在您显示的代码中定义,它看起来是对异步编程的简单误解。请参阅How do I return the response from an aynchronous call,这是重复的。
  • 如果不是浏览器、node.js、rhino 或其他东西,你会在哪里尝试使用它?
  • 我正在打开调用这个 JS 文件的 html 文件。有效的是检查 html 页面并在控制台中输入。
  • 这是因为异步操作在您输入控制台时完成。

标签: javascript html jquery json


【解决方案1】:

这里的问题似乎是ajax请求是一个异步操作。它返回一个承诺,并且在调用下一行时不一定会完成。

所以如果你有一个像下面这样的 ajax 请求,你应该在成功函数内部而不是在 ajax 调用之后进行适当的调用。

$.ajax({
        url: element,
        type: 'GET',
        success: function(returned){
          rxcui.push(returned.approximateGroup.candidate[0].rxcui);
          //Here you should call operations you need to do after the ajax request is done
 })

【讨论】:

  • 这就是问题所在,我对异步操作一无所知。谢谢!
猜你喜欢
  • 2015-01-09
  • 2019-10-18
  • 1970-01-01
  • 2020-11-10
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多