2013-02-27 52 views
0

我正在构建完全由JavaScript组成的网站(为了好玩)。 我现在添加选项来选择一种语言,该语言会将网站的某些部分更改为该语言(大多数硬编码的单词和句子)。使用函数来显示数据库值

我现在试图通过将值传递给一个函数,然后执行ajax调用并根据该值和语言集检索单词/句子。

但是因为ajax是异步它不会工作。我发现了一个很好的例子,只有那种做我想做的,但有一个问题。

这里是小提琴代码:http://jsfiddle.net/6xhxT/5/

$('#test').text(realData); 

当我使用这条线(它挡在了例子)它的伟大工程,但问题是我不知道的div我的id米把数据。

我使用这样的

<div class="whatever">getWord(1)</div> 

因此,例如工作,但我需要现在我把它放在div的ID,但我不希望出现这种情况。我想把它放在我称之为函数的地方。

我知道我可以使用async:false,但我不想使用它。

如果我想要的是不可能的,那么我应该使用什么,我可以使用数组或sessionStorage,但考虑到可能需要加载数千个单词/句子的事实才是明智之举。

+0

是什么异步有什么关系呢? – JJJ 2013-02-27 10:40:52

+0

一切?因为当我调用函数时,它不会返回值(因为它是异步的)。但是如果我将async设置为false,它将起作用,但我必须等待调用完成(并且我不希望这样)。 所以我想做一个异步调用,并且能够显示结果 – eric22269 2013-02-27 10:44:01

回答

0

我无法真正了解您的方法,但在我看来,您可以循环浏览应翻译的元素并使用$(this)来引用元素。

$('.i18n').each(function() { 
    var $this = $(this); 
    $this.load('url/to/translator', { text: $this.text() }); 
}); 

演示:http://jsfiddle.net/eNK9w/

+0

问题是,我希望此功能适用于我的网站上的所有内容,我也将它用于图像标题或替代方法。所以我宁愿只做这个 ' + getWord(2) + ' eric22269 2013-02-27 11:08:51

+0

'$('').appendTo('#whatever').attr('title',getWord(1)).attr('alt',getWord(2)) ' – JJJ 2013-02-27 12:08:44