Rails完成了200 OK,但$.ajax()调用'错误'callback而不是'成功;

Rails completed 200 OK but $.ajax() calling 'error' callback instead of 'success'

本文关键字:调用 错误 callback 成功 OK ajax Rails      更新时间:2023-09-26

我的控制器处理ajax请求如下(简化):

def create
 ...
 @answer = Answer.new(video: video_file)
 if @answer.save
  render json: @answer.video.url
 else
  ...
 end
end

这就是我的ajax函数的定义:

$.ajax({
        url :  "/answers",
        type: 'POST',
        data: data,
        contentType: false,
        processData: false,
        success: function(data) {
            console.log("Success!")
        },    
        error: function(data) {
          console.log("Error!",data)
        }
      });

这是Rails服务器的响应:

Completed 200 OK in 13954ms (Views: 0.3ms | ActiveRecord: 4.6ms)

这就是服务器返回的data(使用Chrome控制台)的样子:

{readyState: 4, responseText: "http://some_url.com", status: 200, statusText: "OK"}

但是,执行的是"error"回调,而不是"success"回调。我做错了什么?

事实证明,如果未指定键,则返回的JSON被解释为格式错误。

如下解析json解决了问题:

render json: {answer_video: @answer.video.url}