2012-01-12 45 views
0

我正在重写Coffeescript中的网站,并且遇到了一些非常错误的问题。我知道这可能是一个非常简单的答案,但我一直坚持这一段时间,所以决定发布。CoffeeScript - AJAX发布/获取问题,返回空白结果

这里是我的代码:

$ -> 
    rankings = new Rankings 
    $('.filter').click -> 
     #highlighting filter on click 
     if $(this).hasClass('genre-filter') 
      rankings.filters.set('genre', $(this).html().toLowerCase()) 
     else 
      rankings.filters.set('time', $(this).html().toLowerCase()) 
     #todo: add loading screen to rankings here 
     #ajax post 
     $.post '../history/ajax/rankingsajax.php', 
      genrefilter: rankings.filt('genre') 
      timefilter: rankings.filt('time') 
      artistfilter: rankings.filt('artist') 
      userfilter: rankings.filt('user') 
      (data) -> 
       alert data 

不管我如何努力,并与它小提琴,它最终总是提醒空白弹出窗口。所以我想我会尝试一个更简单的例子,只是使用get请求。我试过以下内容:

$.get '../index.html', (data) -> alert data 

但是,这也会导致一个空白的弹出窗口。

上面的代码编译正确的JS,所以我迷失在哪里开始。任何帮助表示赞赏。

-Calvin

回答

3

不要害怕使用大括号和括号。他们不是必需的,但他们可以帮助澄清正在发生的事情。

$ -> 
    rankings = new Rankings 
    $('.filter').click -> 
     #highlighting filter on click 
     if $(this).hasClass('genre-filter') 
      rankings.filters.set('genre', $(this).html().toLowerCase()) 
     else 
      rankings.filters.set('time', $(this).html().toLowerCase()) 
     #todo: add loading screen to rankings here 
     #ajax post 
     $.post '../history/ajax/rankingsajax.php', { 
      genrefilter: rankings.filt('genre') 
      timefilter: rankings.filt('time') 
      artistfilter: rankings.filt('artist') 
      userfilter: rankings.filt('user') 
     }, (data) -> console.log(data) 

空白弹出窗口至少让你知道你正在成功回调,这是很好的。所以也许检查你是否打电话给正确的网址。我注意到您正在使用相对路径../history/ajax/rankingsajax.php,请确保路径相对于使用JavaScript而不是JavaScript文件本身的HTML页面。

而不是alert(data),我会使用console.log(data)并在Chrome和Safari中使用Firebug或JS控制台来查看发生了什么。控制台提供比警报更多的信息。

祝你好运, 桑德罗

0

我不知道你有backsteps相对URL。尝试扩展路径。