我认为下面显示的代码可以作为一个魅力,但显然它没有。我不知道为什么它不工作 - URL被正确获取(用firebug检查)但它拒绝将结果保存到我的变量(globalVar)。
我该怎么办?
var globalVar;
function fetchDataset(kategori){
$.getJSON(apiUrl + "?jsoncallback=?", function(json){
globalVar = json;
console.log(globalVar); // Returns Undefined!
});
}
答案 0 :(得分:0)
我猜firebug应该显示你回调的内容。我有一个类似的问题,并使用.parseJSON()解决了它;
http://api.jquery.com/jQuery.parseJSON/
也许有帮助。
回调是否整齐地格式化/“正确”json?
答案 1 :(得分:0)
您的变量不是全局变量。您在函数范围内定义了它。您的Ajax调用是异步运行的,这意味着您的函数将在返回ajax请求之前完成(可能)。尝试在函数外声明globalVar。即
var globalVar;
function fetchDataset(kategori){
编辑另外,请检查statusText
(传递给回调函数的第二个变量),以确保您的请求没有错误。
答案 2 :(得分:0)
您是在提出跨域请求吗?
如果是这样,请确保使用jsonp
JSONP 如果URL包含字符串“callback =?” (或类似的,由服务器端API定义),请求被视为JSONP。有关更多详细信息,请参阅$ .ajax()中有关jsonp数据类型的讨论。
这里有一个jsonp的例子。 http://api.jquery.com/jQuery.getJSON/
答案 3 :(得分:0)
显然,没有任何效果,所以我最终制作了一个基于PHP的代理来隧道传输任何跨域请求。将URL更改为PHP代理后,它运行良好。
感谢大家的帮助。非常感谢!