2015-03-31 75 views
0

我在我的一个咖啡脚本中发送了一个AJAX调用,它发送到控制器的一个方法。 AJAX调用看起来是这样的:混淆从控制器返回到Ajax的数据

auto = -> 
    $.ajax 
    url : '<method_name>' 
    type : 'POST' 
    data : 
     <variable_name>: $('element').val() 
    success: (data, status, response) -> 
     alert('Pass') 
    error: -> 
    alert('Fail') 

我的控制器方法如下所示为:

def method 
    ... 
    ... 
    <book> object can be invalid object. 
    respond_to do |format| 
    format.json { render json: {book: {title: title}} } 
    end 
end 

现在,这种“书/标题”(从控制器)应该是在我的咖啡脚本可通过“数据'变量(在咖啡脚本中)。对?

我的问题是,它什么时候会出现在'错误'块(咖啡脚本)?我可以看到我的'book'对象是NULL(在控制器中),但它仍然在'成功'块(在咖啡脚本中)..我想如果json对象是NULL,它会进入'error'块。

+0

你在服务器端代码中的错误处理让你感到困惑。如果从服务器返回200状态,则Ajax成功将触发 – charlietfl 2015-03-31 18:30:01

+0

如果下面我的答案解决了您的问题,请接受答案,否则请在评论中询问您的查询。 – 2015-05-24 07:56:07

回答

0

每当ajax失败(例如,如果有路由错误或控制器方法中的任何错误等),那么只有它发生错误块。这里你的方法工作正常,没有错误,不管book是不是NULL。 您可以检查控制器,如果book对象为NULL,则返回一些标志,然后在AJAX成功中检查该变量。 例如:

def method 
    ... 
    ... 
    <book> object can be invalid object. 
    if book.nil? 
    format.json { render json: {is_data_null: true} } 
    else 
    respond_to do |format| 
     format.json { render json: {book: {title: title}} } 
    end 
    end 
end 

然后在AJAX成功块,你可以检查标志。