我有以下脚本:
$ ->
$('#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/