我使用咖啡脚本的 ajax 帖子未处理成功回调
Posted
技术标签:
【中文标题】我使用咖啡脚本的 ajax 帖子未处理成功回调【英文标题】:My ajax post with coffeescript is not handling success callback 【发布时间】:2012-11-12 20:07:24 【问题描述】:我正在尝试使用 coffeescript 和 jquery 发表一篇文章,但我的脚本没有处理成功回调。
*cards_controller.js.coffee*
if $('form').attr('action') == '/cards' alert "Hey ho" $('#add_card').click (e) ->
e.preventDefault()
$.ajax '/cards',
type: 'PUT' #Tried POST also
dataType: 'json'
error: (jqXHR, textStatus, errorThrown) ->
console.log textStatus
success: (res) ->
console.log "Card name: " + data.card.code + "\nPoints: " + data.points
complete: (jqXHR, textStatus) ->
console.log "Status: " + textStatus
index.html.erb
<%= form_tag url_for(:controller => 'cards', :action => 'create'), :remote => true %>
而生成的javascript如下:
(function()
if ($('form').attr('action') === '/cards')
alert("Hey ho");
$('#add_card').click(function(e)
e.preventDefault();
return $.ajax('/cards',
type: 'POST',
dataType: 'json',
error: function(jqXHR, textStatus, errorThrown)
return alert(textStatus);
,
success: function(res)
console.log("Card name: " + data.card.code + "\nPoints: " + data.points);
return $('#card-list > tbody:last').append('<tr>test</tr><tr>uauauiua</tr>');
,
complete: function(jqXHR, textStatus)
return console.log("Status: " + textStatus);
);
);
).call(this);
*cards_controller.rb*
def create
card = Card.find_by_code(params[:code])
if card && card.user.nil?
current_user.add_card(card)
else
return render :status => 401, :json => :message => "O cartão não existe ou já está cadastrado"
end
respond_to do |format|
format.js render json: :card => card, :points => card.card_business_points.sum("points") , content_type: 'text/json'
end
end
请求成功到达控制器并且卡被正确创建。问题是在 Chrome 上调试它似乎不处理回调并且不记录。
请问有人可以帮忙吗?
【问题讨论】:
你不能直接使用方法'PUT'。 [如何使用 jquery 将数据放到 rails][1] [1]:***.com/questions/907910/… @Oleg:你会注意到这个问题来自 2009 年(即一百万年前的互联网)。 Rails 3 非常乐意使用 PUT。 我也尝试过发布,但没有成功! 没有,即使调用了控制器代码。 【参考方案1】:我刚刚发现问题出在哪里。
在我的咖啡脚本中,使用 jQuery ajax 函数进行提交时,我忘记在数据字段中添加我要提交的内容。
最终的脚本和这个类似:
(document).ready ->
if $('form').attr('action') == '/cards'
$('#add_card').click (e) ->
e.preventDefault()
$.ajax '/cards',
type: 'POST'
dataType: 'json'
data: code: $("#code").val()
error: (jqXHR, textStatus, errorThrown) ->
alert textStatus
success: (data, textStatus, jqXHR) ->
console.log "Card name: " +
data.card.code + "\nPoints: " + data.points
感谢您的帮助,当我没有传递数据参数时,我无法弄清楚为什么我的回调没有被调用。
问候!
【讨论】:
以上是关于我使用咖啡脚本的 ajax 帖子未处理成功回调的主要内容,如果未能解决你的问题,请参考以下文章
如何使用咖啡脚本使用`this`和`_this`(胖箭头)?
php 通过AJAX随机发布。使用此函数可以获取AJAX回调处理程序中的随机帖子。