jquery - CoffeeScript 和 jQuery.post() 成功 : callback

标签 jquery coffeescript

我有以下脚本:

$ ->
    $('#new_event').submit ->
        $.post(
            $(this).attr('action')
            $(this).serialize()
            success: (data, textStatus, jqXHR) ->
                processData(data, textStatus, jqXHR)
        )
        return false

processData = (data, textStatus, jqXHR) ->
    alert(data)

到目前为止我还无法调试这个。它呈现为:

(function() {
  var processData;
  $(function() {
    return $('#new_event').submit(function() {
      $.post($(this).attr('action'), $(this).serialize(), {
        success: function(data, textStatus, jqXHR) {
          return processData(data, textStatus, jqXHR);
        }
      });
      return false;
    });
  });
  processData = function(data, textStatus, jqXHR) {
    return alert(data); //BREAKPOINT HERE
  };
}).call(this);

我觉得还不错。如果我将断点置于 alert 上,它永远不会停在那里。我的 JavaScript 知识非常有限,所以我显然在这里遗漏了一些东西。很想知道发生了什么。

谢谢, 丹妮。

最佳答案

我认为你的 CoffeeScript 没问题,但你的 $.post 参数是错误的。来自 fine manual :

jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )

因此,您不要将 success: fn(...) 参数与 $.post 一起使用,只需为其提供一个函数即可:

$ ->
    $('#new_event').submit ->
        $.post(
            $(this).attr('action')
            $(this).serialize()
            (data, textStatus, jqXHR) ->
                processData(data, textStatus, jqXHR)
        )
        false

processData = (data, textStatus, jqXHR) ->
    alert(data)

甚至:

$ ->
    $('#new_event').submit ->
        $.post(
            $(this).attr('action')
            $(this).serialize()
            processData
        )
        false

processData = (data, textStatus, jqXHR) ->
    alert(data)

或者:

$ ->
    $('#new_event').submit ->
        $.post(
            $(this).attr('action')
            $(this).serialize()
            (data, textStatus, jqXHR) ->
                alert(data)
        )
        false

如果您不介意额外的缩进并且在其他地方不需要processData

关于jquery - CoffeeScript 和 jQuery.post() 成功 : callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7962693/

相关文章:

javascript - 如何使用 JQuery 删除加载速度太慢的图像?

jquery - 使用jquery将基于coffeescript类的数据结构上传到ruby on Rails 3?

javascript - javascript 的 'setInterval' 是否可以配置为立即触发,并有一个时间间隔?

javascript - 如何更改下拉菜单的href

php - 我的 JQuery Chosen 插件不工作

jquery - 首先解除绑定(bind)点击然后绑定(bind)(jquery)

jquery - 我可以为 jQuery 的事件添加括号吗?

javascript - 组合多个元素的 jQuery 事件监听器

javascript - 设置/覆盖背景颜色时的 jQuery/CSS 优先级

javascript - 使用 Konacha/Poltergeist(和 Rails)测试点击事件