当前位置 : 主页 > 网页制作 > JQuery >

CoffeeScript和jQuery.post()成功:回调

来源:互联网 收集:自由互联 发布时间:2021-06-15
我有以下脚本: $- $('#new_event').submit - $.post( $(this).attr('action') $(this).serialize() success: (data, textStatus, jqXHR) - processData(data, textStatus, jqXHR) ) return falseprocessData = (data, textStatus, jqXHR) - alert(dat
我有以下脚本:

$->
    $('#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);

哪个看起来对我好.如果我把断点置于警戒状态,它永远不会停在那里.我的javascript知识非常有限,所以我显然在这里遗漏了一些东西.很想知道发生了什么.

谢谢,
达尼.

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

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

所以你不使用成功: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.

网友评论