【问题标题】:CoffeeScript - AJAX Post/Get Problems, Returning Blank ResultsCoffeeScript - AJAX 发布/获取问题,返回空白结果
【发布时间】:2012-02-09 02:51:09
【问题描述】:

我正在用 Coffeescript 重写一个网站,但遇到了一些非常棘手的错误。我知道这可能是一个非常简单的答案,但我已经坚持了很长一段时间,所以决定发布。

这是我的代码:

$ ->
    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 '../index.html', (data) -> alert data

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

上面的代码可以正确编译为 JS,所以我不知道从哪里开始。任何帮助表示赞赏。

-卡尔文

【问题讨论】:

    标签: ajax post get coffeescript


    【解决方案1】:

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

    $ ->
        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 的 HTML 页面,而不是 JavaScript 文件本身。

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

    祝你好运, 桑德罗

    【讨论】:

      【解决方案2】:

      我不确定您的相对 URL 是否包含后退。尝试扩展路径。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-28
        • 2013-12-04
        • 1970-01-01
        • 1970-01-01
        • 2020-12-08
        • 2022-07-11
        • 2017-01-29
        • 1970-01-01
        相关资源
        最近更新 更多