1

我在 .js 文件中有这段代码:

$.getJSON('http://api.wipmania.com/jsonp?callback=?', function (data) {     
  if (data.address.country='spain') {
    var a="http://www.link1.com";
  } else { 
    var a="http://www.link2.com";
  }
  return a; 
});

var fan_page_url = data();

如何将 var a 存储在 var fan_page_url 中?

非常感谢。

4

3 回答 3

2

尝试摆脱a并直接分配链接。

var fan_page_url;
$.getJSON('http://api.wipmania.com/jsonp?callback=?', function(data) {
    if (data.address.country = 'spain') {
        fan_page_url = "http://www.link1.com";
    } else {
        fan_page_url = "http://www.link2.com";
    }
});
于 2012-08-15T02:25:57.163 回答
0

您有两种选择:按照仓库的建议直接分配外部变量,或者将$.getJSON返回值视为Deferred

$.when($.getJSON(...)).done(function(returnValue) {
    fan_page_url = returnValue;
});

如果您不想硬编码要存储结果的变量,后者很有用(尽管通常这不是问题,前一个选项更容易/更干净)。

于 2012-08-15T02:31:06.343 回答
0

这是我刚刚偶然发现的一个老问题(寻找稍微不同的东西),但由于答案似乎没有击中头部,我想我会加 2 美分:如果你(op)用一个变量成功了在 config.js 中进行了硬编码和手动设置,您可以从 start.js 中获取,为什么不简单:

  • 像在全局范围内一样保留声明的变量
  • 为其分配默认值或 null 或空值:

    var fan_page_url = null; // or
    var fan_page_url = ''; // or
    var fan_page_url = 'http://url_default'; // etc...
    
  • 然后更新 json 函数中的全局变量:

    $.getJSON('http://api.wipmania.com/jsonp?callback=?', function(data) {
        if (data.address.country='spain') {
            fan_page_url = "http://url1";
        } else { 
            fan_page_url = "http://url2";
        }
    });
    
  • 在您的 start.js 页面中,您始终可以执行检查以查看变量是否已设置,或者是否仍然带有它的默认值并采取相应的行动......

如果它曾经与您通常手动声明的变量一起工作,那么它在这里的工作方式可能与您在结构上没有任何改变一样,只是在 json 响应之后更新变量。

为后代发布的答案,它可能对将来的某人有所帮助。

于 2015-11-20T23:24:45.687 回答