2017-02-21 6 views
0

Ich versuche, diese gesamte Zeile zu löschen, wenn Sie auf die Schaltfläche Löschen klicken. Das ist meine jQuery-Befehl:Rückrufdaten werden nicht erkannt

UPDATE: Ich habe die Klick-Funktion meiner finalisierte Version aktualisiert:

$(document).on('click', '.delete-assignment',function() { 
    console.log("click"); 
    var data = { 
     assignment_id: $(this).closest('tr').find('.assignment-id').html(), 
     class_id: $('#classId').val() 
    } 

    var row = $(this).closest('tr'); 

    deleteAssignment(data, function(returnData){ 
     var returnData = JSON.parse(returnData); 

     if(returnData.status == "Success"){ 
      console.log("yes"); 
      row.hide(); 
     } 
    }); 
}); 

Wenn ich löschen klicken, es löst die deleteAssignment Funktion erfolgreich und gibt einen Rückruf von { „status“ :"Erfolg"}. Aber wenn ich returnData.status == "Erfolg" wird nicht ausgelöst.Wenn ich versuche jQuery.type (returnData), Es sagt String. So implementiert ich JSON.parse und es sagt unerwartetes Token in json an Position 0

hier ist mein html:

<tbody id="Homework"> 
    <tr> 
     <td><a href="/class/assignment/view/51">Homework Test Title</a></td> 
     <td>02/16/2017 - 10:00 AM</td> 
     <td class="assignment-id">51</td> 
     <td><button type="button" class="btn btn-danger delete-assignment">Delete</button></td>  
    </tr> 
</tbody> 

Ich wollte auch beinhalten, wie ich Daten am Übergang zurück zu deleteAssignment als Rückruf (definiert in der JavaScript-Funktion (deleteAssignment)

assignment = Assignments.objects.get(id=data['assignment_id']) 
     assignment.delete() 

     data = {} 
     data['status'] = "Success" 

     return HttpResponse(json.dumps(data), content_type="application/json") 

Antwort

1

Sie haben ein Clouser Problem.

die Variable this innen Ihre Callback-Funktion ist nicht das gleiche this, dass innerhalb der click Funktion.

Es gibt mehrere Möglichkeiten, dies zu lösen, hier ist einer von ihnen:

$('.delete-assignment').on('click', function() { 

     var data = { 
      assignment_id: $(this).closest('tr').find('.assignment-id').html(), 
      class_id: $('#classId').val() 
     } 
     var that = this; 

     deleteAssignment(data, function(returnData){ 
      console.log(returnData); 
      if(returnData.status == "Success"){ 
       print("yes"); 
       $(that).closest('tr').remove(); 
     } 
    }); 
}); 
Verwandte Themen