我在coffeescript中有以下功能:
@get_person = (person_id) ->
$.ajax '/people/'+person_id,
type: 'GET'
dataType: 'text'
error: (jqXHR, textStatus, errorThrown) ->
$('body').append "AJAX Error: #{textStatus}"
success: (data, textStatus, jqXHR) ->
$('.right-bar').html(data) ->
alert 1
$('#interaction_filter').chosen()
的一部分
$('.right-bar').html(data) ->
完美无缺,但下面的回调不会执行。我究竟做错了什么?控制台中没有显示任何内容。
答案 0 :(得分:1)
你不能这么做:
$('.right-bar').html(data) ->
语法不允许,你可以确定这个
$('.right-bar').html (data) ->
如下所示:http://api.jquery.com/html/
请考虑在html和(数据)之间添加空格 - >
答案 1 :(得分:0)
通过CoffeeScript编译器运行后,我得到以下输出:
this.get_person = function(person_id) {};
$.ajax('/people/' + person_id, {
type: 'GET',
dataType: 'text',
error: function(jqXHR, textStatus, errorThrown) {
return $('body').append("AJAX Error: " + textStatus);
},
success: function(data, textStatus, jqXHR) {
return $('.right-bar').html(data)(function() {
alert(1);
return $('#interaction_filter').chosen();
});
}
});
我相信你想要做的是将调用链接到html()。如果是这样,它将如下所示:
@get_person = (person_id) ->
$.ajax '/people/'+person_id,
type: 'GET'
dataType: 'text'
error: (jqXHR, textStatus, errorThrown) ->
$('body').append "AJAX Error: #{textStatus}"
success: (data, textStatus, jqXHR) ->
$('.right-bar').html(data).html ->
alert 1
$('#interaction_filter').chosen()
答案 2 :(得分:-1)
Coffeescript是空格敏感的,所以你需要缩进你的回调体,使其成为该函数的一部分。
正如安东尼所指出的,原始代码的前几行编译为
this.get_person = function(person_id) {};
$.ajax('/people/' + person_id, {
....
换句话说,分配一个对this.get_person
无效的函数,然后进行ajax调用。
假设您希望在函数内发生ajax调用,请尝试:
@get_person = (person_id) ->
$.ajax '/people/'+person_id,
type: 'GET'
dataType: 'text'
error: (jqXHR, textStatus, errorThrown) ->
$('body').append "AJAX Error: #{textStatus}"
success: (data, textStatus, jqXHR) ->
$('.right-bar').html(data) ->
alert 1
$('#interaction_filter').chosen()
缩进$.ajax
行使其成为回调函数的一部分。
如果您想在Try Coffeescript
上尝试更多解决方案