Javascript 通过ajax获取json的类初始化总是失败
我是JavaScript的新手。我想创建一个类,在初始化时使用Ajax与Flickr Web API通信 Photo2.jsJavascript 通过ajax获取json的类初始化总是失败,javascript,jquery,Javascript,Jquery,我是JavaScript的新手。我想创建一个类,在初始化时使用Ajax与Flickr Web API通信 Photo2.js var Photo2; Photo2 = (function() { Photo2.prototype.json = null; function Photo2() { $.getJSON('http://www.flickr.com/services/rest/?jsoncallback=?', { format
var Photo2;
Photo2 = (function() {
Photo2.prototype.json = null;
function Photo2() {
$.getJSON('http://www.flickr.com/services/rest/?jsoncallback=?', {
format: 'json',
method: 'flickr.photos.search',
api_key: '7965a8bc5a2a88908e8321f3f56c80ea',
user_id: '29242822@N00',
per_page: '100'
}, function(data) {
this.json = data.photos.photo;
});
}
return Photo2;
})();
但是当初始化为photo2=newphoto2
时,它没有photo2.json
谢谢你的好意 你真的应该重写你的代码。这很复杂,很难弄清楚你想要实现什么 首先,从服务器获取数据是异步的,所以您不能确定在创建Photo2
json
属性的实例之后是否会定义该属性
接下来,在初始化对象时进行服务器调用是一个非常糟糕的主意。我建议您采用以下解决方案:
(function() {
var Photo2 = function(callback) {
this.json = null;
};
Photo2.prototype.getData = function(successCallback) {
var self = this;
$.getJSON('http://www.flickr.com/services/rest/?jsoncallback=?', {
format: 'json',
method: 'flickr.photos.search',
api_key: '7965a8bc5a2a88908e8321f3f56c80ea',
user_id: '29242822@N00',
per_page: '100'
}, function(data) {
self.json = data.photos.photo;
typeof successCallback == 'function' && successCallback();
});
};
var photo = new Photo2();
photo.getData(function successCallback() {
console.log('Data loaded', photo.json);
});
}).call(this);
这里的工作演示:我不使用上面的方法,但是对于json回调,这通常意味着请求是带填充的json,我相信是
格式:“jsonp”
。谢谢您的建议。我尝试了json
和jsonp
,但都失败了。较新版本的jQuery似乎在使用$.getJSON获取jsonp时遇到了一些问题。您尝试过使用$.ajax吗?我认为您会遇到的问题是,Photo2
仅在该上下文中定义,如果您想在该上下文之外执行var Photo2=new Photo2()
,则应该失败。也许你想重写代码…谢谢你的建议。对不起,我忘了取支架了。上面的代码是最新的。我正在努力理解上面的代码。。。顺便说一句,你的JSBin工具很吸引人@威德:它不是我的:),但我真的建议你在共享JS代码时使用它。如果您还有其他问题,请随时在此提问。