【问题标题】:How to update a variable from another scope from within a callback function?如何从回调函数中更新另一个范围的变量?
【发布时间】:2012-12-22 19:53:06
【问题描述】:

我在更新与回调函数不同范围的变量时遇到问题,回调函数本身是 jQuery getJSON 调用中的参数。有人能告诉我如何从下面的回调函数中将元素推送到 chg_percent 变量上吗?谢谢!

$(document).ready(function() {

    chg_percent = []; // array of all percent changes

    var url = 'http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json&view=basic&callback?';

    $.getJSON(url, null, function(data) {

        for (i = 0; i < data.list.resources.length; i++) {
        chg_percent.push(data.list.resources[i].resource.fields.chg_percent);
        }
    });
});

【问题讨论】:

  • 在答案开始下雨之前,代码的 sn-p 确实有效,chg_percent 没有范围问题。你能再澄清一下范围问题吗?
  • 运行时查看控制台。我预计问题实际上是[同源策略]{en.wikipedia.org/wiki/Same_origin_policy}。正如@Alexander 所说,没有范围问题。
  • 据我所知,存在范围问题。即使我这样做: chg_percent.push(3);然后在 .getJSON 调用 go alert(chg_percent) 之后,它还没有被推送到它上面。并且这里没有 same_origin 问题。这是 jsonp,它可以毫无问题地获取数据。
  • 我明白了,你可以绕过 CORS。我离开这里。祝你好运

标签: javascript jquery callback scope


【解决方案1】:

chng_percentfunction(data) { ... } 一起添加为参数。

应该是这样的:

$.getJSON(url, null, function(data, chng_percent) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2020-07-22
    相关资源
    最近更新 更多