2013-02-27 55 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