Ruby on rails Rails AJAX:回调触发既不成功也不失败
我在一些JavaScript中嵌入了以下AJAX代码:Ruby on rails Rails AJAX:回调触发既不成功也不失败,ruby-on-rails,ajax,Ruby On Rails,Ajax,我在一些JavaScript中嵌入了以下AJAX代码: $.ajax({ type: 'POST', url: '/books', data: {'book[author]':tags[i].book.author, 'book[edition]':tags[i].book.edition, 'book[title]':tags[i].book.title, 'book[url]':newBookUrl}, dataType: 'json', async: false,
$.ajax({
type: 'POST',
url: '/books',
data: {'book[author]':tags[i].book.author, 'book[edition]':tags[i].book.edition, 'book[title]':tags[i].book.title, 'book[url]':newBookUrl},
dataType: 'json',
async: false,
success: function(data){
mapcode+=" href='javascript:lightbox("+data+")' />";
alert(mapcode);
},
fail: function(){mapcode+=" href='' onclick='return false;' />";
alert(mapcode);}
});
它正在调用此模型中的create方法:
def create
book = Book.new(params[:book])
if (Book.find_by_url(book.url))
book = Book.find_by_url(book.url)
else
book.save
end
book.users << current_user
render :json => book.url
end
def创建
book=book.new(参数[:book])
if(Book.find_by_url(Book.url))
book=book.find\u by\u url(book.url)
其他的
保存
结束
book.users book.url
结束
出于某种原因,无论是成功还是失败回调都不会触发。否则,AJAX似乎可以正常工作。新数据被上传到数据库,根据Firebug,我得到了以JSON格式返回的book.url。知道这里发生了什么吗?为什么将
async
设置为false
?在这之后不久会有另一个AJAX调用,它的成功方法会将用户发送到一个新页面。在转到下一行之前,我要确保此文件已上载。不幸的是,将async设置为true并不能解决问题。您是否尝试过使用bind而不是$。ajax
<代码>$('#yourelement').bind(“ajax:success”,函数(数据、xhr、设置){alert(xhr.responseText);})地图代码有初始值吗(对该值调用“+”合法吗?@FrederickCheung:是的,地图代码有初始值。这也是合法的。问题似乎出在模型中。当我用book.id交换book.url时,会调用success方法。我不确定这到底是为什么发生的,但如果没有别的,我可以从这里继续前进。