【问题标题】:AJAX getting called, even though doc is not loaded即使没有加载文档,也会调用 AJAX
【发布时间】:2012-07-18 23:27:22
【问题描述】:

我的咖啡脚本中有这段代码:

$('.asdasd').ready ->
  $.ajax '/splunk/100000000',
  type: 'GET'
  cache: false
  success: (html) ->
    $('.splunk_results').append html

asdasd div 甚至都不存在 - 但是,在我的控制台中,我可以看到正在调用 /splunk/10000000"。为什么会发生这种情况?

编辑:

我认为这个问题可能与有问题的 div 没有加载初始页面这一事实有关 - 页面充满了部分,并且 div 仅通过单击另一个 js 按钮加载修改 DOM。我基本上想看看那个 div 何时存在,当它存在时,发出一个新请求并用该请求的结果填充 div。

【问题讨论】:

  • 这段代码是否包含在DOMReady 事件中?

标签: ruby-on-rails ajax coffeescript


【解决方案1】:

(针对问题编辑进行了大量编辑)

.ready 仅对文档有效。 jQuery's documentation for ready 没有为 $ 的参数不是 document 的情况定义行为。也就是说,没有什么能阻止您定义一个按照您想要的方式运行的事件!与其监听 ready 事件,不如发明一个自定义事件(例如,readyForSplunk)并在适当的时间触发它。

该文档或要创建的asdasd div 的某个更近的父级应该有一个代理处理程序来监听readyForSplunk 事件。创建asdasd div 的js 按钮也应该triggerHandler('readyForSplunk') 新的div。

【讨论】:

  • 这很好。我添加了一个编辑以进一步说明我的问题
【解决方案2】:

readyDOM is ready 时运行。如果您只希望它在有问题的元素在页面中时运行,您可以执行以下操作:

_get = ->
  $.ajax '/splunk/100000000',
    type: 'GET'
    cache: false
    success: (html) ->
      $('.splunk_results').append html

$('.asdasd').each ->
  _get()
  _get = ->

【讨论】:

  • 不幸的是,这对我不起作用,它可能与我上面所做的编辑有关
猜你喜欢
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
相关资源
最近更新 更多