2016-08-18 3 views
1

Kann jemand erklären, warum meine @Modell-Variable nicht in meinem AJAX-Aufruf verfügbar ist? Wenn ich versuche, die Variable @model in meinem Fehlerrückruf zu verwenden, existiert sie nicht.Variable nicht innerhalb von AJAX Anruf

$.ajax URL+ "/api/v1/menu_items/#{@model.id}/verify", 
    type: 'PUT' 
    data: formData 

    error: (response) -> 
     alert(response) 
     window.location.href = "/menu_items/#{@model.id}" 
    success: (data) -> 
     window.location.href = "/menu_items/#{data.id}"  
+0

Lesen Sie mehr über [ '.ajax' $] (http://api.jquery.com/jQuery.ajax/) und finden Sie heraus, was als' this' in der Rückrufe ist verwendet. Verwenden Sie dann '(response) =>', um gebundene Funktionen zu verwenden. –

Antwort

0

Verwenden => fat arrow, wenn Sie wollen this im äußeren Rahmen einer Funktionsdefinition zu bewahren.

Überprüfen Sie die Kommentare unten.

$.ajax URL+ "/api/v1/menu_items/#{@model.id}/verify", 
    type: 'PUT' 
    data: formData 

    # this reference to the `this' where $.ajax is called. 

    error: (response) => # a function definition here. use => to bind this to the outer scope 
     alert(response) 
     window.location.href = "/menu_items/#{@model.id}" 
    success: (data) -> 
     # in this function, this will be bound to the object on which the success callback is called, normally, null 
     window.location.href = "/menu_items/#{data.id}"