【问题标题】:Use function to display database value使用函数显示数据库值
【发布时间】:2013-02-27 09:43:55
【问题描述】:

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

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

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

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

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

当我使用这条线时(它在示例中被阻止)效果很好,但问题是我不知道要放入数据的 div 的 id。

我是这样用的

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

所以这个例子有效,但我现在需要我放入的 div 的 id,但我不想要那个。我希望它与调用函数的位置相同。

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

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

【问题讨论】:

  • 异步与它有什么关系?
  • 一切?因为当我调用该函数时,它不会返回值(因为它是异步的)但是如果我将 async 设置为 false 它将起作用,但我必须等待调用完成(我不希望那样)。所以我想进行异步调用并且仍然能够显示结果

标签: jquery ajax asynchronous


【解决方案1】:

我无法真正理解您的方法是什么,但在我看来,您可以遍历应该翻译的元素并使用 $( this ) 来引用该元素。

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

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

【讨论】:

  • 问题是我希望这个功能适用于我网站上的所有内容,我也将它用于图像标题或alt之类的东西。所以我宁愿这样做
  • $( '&lt;img src="foo.jpg"&gt;' ).appendTo( '#whatever' ).attr( 'title', getWord(1) ).attr( 'alt', getWord(2) )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 2016-08-05
  • 2015-12-31
相关资源
最近更新 更多