cod*_*dog 3 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)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我不能为我的生活调试这个.它呈现为:
(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);
Run Code Online (Sandbox Code Playgroud)
哪个看起来对我好.如果我把断点放在alert它上面永远不会停止.我的javascript知识非常有限,所以我显然在这里遗漏了一些东西.很想知道发生了什么.
谢谢,丹妮.
mu *_*ort 12
我认为你的CoffeeScript没问题,但你的$.post论点是错误的.从精细手册:
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)
Run Code Online (Sandbox Code Playgroud)
甚至:
$ ->
$('#new_event').submit ->
$.post(
$(this).attr('action')
$(this).serialize()
processData
)
false
processData = (data, textStatus, jqXHR) ->
alert(data)
Run Code Online (Sandbox Code Playgroud)
要么:
$ ->
$('#new_event').submit ->
$.post(
$(this).attr('action')
$(this).serialize()
(data, textStatus, jqXHR) ->
alert(data)
)
false
Run Code Online (Sandbox Code Playgroud)
如果你不介意额外的缩进,不需要processData其他地方.