2010-07-11 40 views
0

我在Rails中使用jQuery getScript在仪表板页面上加载AJAX搜索。但我注意到,除了正确地进行调用之外,它还将重新加载整个页面(在后台)。Rails AJAX请求也打电话给整个原始页面

我不知道为什么会发生这种情况。

我检查了我所有的before_filters,我的所有认证逻辑,我尝试过使用不同的jQuery ajax函数(get,getJSON等),但没有任何结果。它仍在重新加载页面。此外,这两条路线甚至在不同的控制器上!

有人知道可能会发生什么吗?

编辑:

已解决。

除了$ .get()函数之外,我还使用了$ .ajax({})函数来设置before函数。 $ .ajax中的某些内容一定是触发了这个调用,所以我简单地将新函数合并为一个,并解决了我的问题。

顺便说一句,尽管我在这个过程中发现了xhr.request?,它有助于检测javascript调用,并防止某些操作响应javascript。

+0

显示响应AJAX调用的控制器操作。你也确定你正在发送正确的接受头文件吗?如:'text/xml','text/javascript'或'application/json'? – 2010-07-11 06:12:38

+0

也同时,我使用一个简单的response.xhr? before_filter在/ dash页面(这是页面被再次调用),所以至少它不会返回任何东西,但它仍然很奇怪和烦人 – 2010-07-11 06:30:10

+0

你应该将解析结果作为答案发布,你可以自己接听/接受问题,它可能会帮助未来有这个问题的人快一点:) – 2010-07-11 11:32:04

回答

0

这个jQuery JavaScript是触发额外调用:

$.getScript(correct_url, function({ 
     $.ajax({beforeSend: function(){}...)} 
     callback code 
)} 

不能使用这样的getScript加入速记功能里面的AJAX快捷方式。内在的.ajax正在打电话。所以我简单地将它们组合成一个.ajax函数

$.ajax({ 
    url: correct_url, 
    type: 'get', 
    dataType: 'script', 
    beforeSend: function(){ 

     }), 
     success: function(){ 
      <callback code> 
     } 
})