2015-03-31 77 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成功塊,你可以檢查標誌。