Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails AJAX:回调触发既不成功也不失败_Ruby On Rails_Ajax - Fatal编程技术网

Ruby on rails Rails 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,

我在一些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,
  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方法。我不确定这到底是为什么发生的,但如果没有别的,我可以从这里继续前进。