我的问题如下:
我有许多与一个唯一url相关联的曲面。当我移动到一个特定的表面时,url必须实时(ajax)触发,并且响应应该设置为表面的内容。
当我尝试执行上述操作时,它实际上会在应用程序初始化时预先加载所有url及其内容。这减缓了整个过程,不是我想要的。我只想在用户处于活动状态时加载内容。
var ajaxContent = "";
$.ajax({
url: 'ajax/article.php?url='+escape(this.options.url),
async: false,
success: function(data) {
ajaxContent = data;
}
});
this.pageSurface = new Surface({
size: [undefined, undefined],
content: ajaxContent,
classes: ["page"],
properties: {
backgroundColor: '#111111',
fontSize: '16px'
}
});
上面的代码是在一个曲面循环中。
我对Ajax没有任何经验,但据我所知,根据您的描述,基本上是异步请求数据。。。所以我会根据这个假设来回答。
首先,我会稍微改变一下操作顺序!
for (var i = 0; i < 10; i++) {
var surface = new Surface({
content : '',
classes : ['page'],
properties : {
backgroundColor : '#111111',
fontSize : '16px'
}
});
var ajax_request = {
url : 'ajax/article.php?url=' + escape(this.options.url),
async : true,
success : function(data) {
//possibly validate the obtained data further
this.setContent(data);
}.bind(surface)
}
var load = function load() {
this.removeListener('mouseover', load);
$.ajax(ajax_request);
}.bind(surface);
surface.on('mouseover', load);
}
我将曲面绑定到该曲面特定的所有函数,否则循环中可能会发生奇怪的事情。这将确保只有一个曲面加载内容,并且该内容仅分配给同一曲面!
最后,你应该注意你的单引号和双引号,因为你同时使用它们。Famo.us(该公司)更喜欢单引号,但如果你使用双引号也没关系。这只是一个更好的练习,至少要坚持两者中的任何一个。