jQuery Ajax并不总是向服务器发送请求

时间:2011-01-30 17:08:49

标签: jquery ruby-on-rails ruby ajax

所以,我有这个链接,应该在每次点击时发送一个AJAX请求:

<a href="/application/start_game?human_is_first=true" data-remote="true">Yes</a>

但是,它并不总是第一次尝试。有时候,它只有在点击其他AJAX链接后才会起作用(它们也不应该发送请求)。

我知道链接正在发送请求,因为单击链接时服务器控制台输出不会更改。没有错误,没有。

我正在使用rails.js和jQuery 1.4.4。

直播应用可向您显示正在进行的操作:http://ttt-ai.heroku.com/

4 个答案:

答案 0 :(得分:3)

页面上的JavaScript没有任何问题;只有你可怜的CSS。

你会看到,在你的整个“是”和“否”按钮中,实际的链接元素仅占据字母周围的微小空间。该链接绝对没有填充,因此在单击按钮时很容易错过。

因为您在LI元素本身上创建了“:hover”样式,所以您给我们的印象是整个元素对点击做出反应。它不是。只有A元素对点击作出反应并由rails.js处理。

答案 1 :(得分:1)

一个常见的问题是javascript没有及时加载,或者是在错误的时间加载(即在dom准备好之前)。 JS错误日志中是否有任何错误?

答案 2 :(得分:0)

我建议你使用带有firequery的firebug(Firefox插件)。 然后,您可以看到绑定的jquery事件和从浏览器传出的ajax请求。 通常这有助于理解为什么某些东西不起作用。 检查firebug控制台是否正确发送了ajax请求,如果没有,请检查链接上的click事件是否绑定。

答案 3 :(得分:0)

除了@ ispum建议检查firebug / other调试器中的绑定事件之外,还要检查以确保ajax:before回调没有取消您的事件:

  $("#your_link_id")
    .bind('ajax:before', function() { 
       //if this returns false, remote event is cancelled 
     });

未返回false,这将取消远程操作