2016-08-04 19 views
0

Ich versuche, eine Ajax Beitrag Anfrage an eine create Aktion in einem Controller, aber ich bekomme undefined statt einer JSON Antwort in der Ajax success Funktion. Ich brauche eine JSON-Antwort, weil ich eine einzelne Seite App baue.Rails Ajax Beitrag Antwort undefined

Ich benutze render :json => {name: "jim"}.to_json. Ist das der richtige Weg, oder gibt es etwas Grundlegendes zu Ajax-Anfragen, die ich vermisse?

Jede Hilfe würde sehr geschätzt werden.

Clientseitige Ajax Post Anfrage:

submit_click: -> 
    $.post "/responses", 
     type: "POST" 
     dataType: "json" 
     contentType: "application/json" 
     charset="utf-8" 
     response: 
     image_id: @image_name 
     data: @data_pool 
     success: (json) -> 
     console.log json 

Aktion in der Antwort-Controller:

def create 
    @response = Response.new(response_params) 
    if @response.save 
     count = count_completed_responses 
     if count < 20 
     render :json => {name: "jim"}.to_json 
     end 
    end 
    end 

EDIT: Ich habe die Antwort kommt durch in der Registerkarte Netzwerk der Chrom Entwickler-Konsole sehen können - {Name: "Jim"}. Warum kann ich im ajax success callback nicht darauf zugreifen?

2. EDIT: Ich habe tatsächlich diese mithilfe des folgenden nach der $post Funktion zu arbeiten:

.done (data) 
    console.log data 

Wer weiß, warum das funktioniert und die andere Art und Weise nicht?

+0

Sie keine Notwendigkeit 'Typ verwenden: "POST"'. Die Methode selbst wird eine POST-Anfrage stellen. –

+0

'charset =" utf-8 "' ist auch falsche Syntax. Ich weiß nicht, wie Sie den Server anrufen können :) –

Antwort

0

Es sollte wie sein unter

submit_click: -> 
    $.post "/responses", 
    contentType: 'application/json; charset=utf-8' 
    dataType: 'json' 
    response: 
     image_id: @image_name 
     data: @data_pool 
    success: (json) -> 
     console.log json 

Hoffe, dass es für Sie arbeiten wird

+0

Danke aber leider hat das nicht funktioniert - Konsolenprotokoll gibt immer noch undefined aus – RobotEyes