2017-07-12 3 views
0

Wie ruft man eine URL von Routen mit Ajax?Rufen Sie eine Lösch-URL von Routen mit Ajax?

Die Route:

Route::delete('dashboard/tags/destroy/{tag}', '[email protected]')->name('tagdestroy'); 

Controller:

public function destroy($id) { 
     $tag = Tag::findOrFail($id); 
     $tag->delete(); 

     return response()->json($tag); 
    } 

Ajax-Code:

$(document).on('click', '.delete-modal', function() { 
     $('.modal-title').text('Delete'); 
     $('#id_delete').val($(this).data('id')); 
     $('#title_delete').val($(this).data('title')); 
     $('#deleteModal').modal('show'); 
     id = $('#id_delete').val(); 
    }); 
    $('.modal-footer').on('click', '.delete', function() { 
     $.ajax({ 
      type: 'DELETE', 
      url: 'dashboard/tags/destroy/' + id, 
      data: { 
       '_token': $('input[name=_token]').val(), 
      }, 
      success: function (data) { 
       toastr.success('Successfully deleted Post!', 'Success Alert', {timeOut: 5000}); 
       $('.item' + data['id']).remove(); 
       $('.col1').each(function (index) { 
        $(this).html(index + 1); 
       }); 
      } 
     }); 
    }); 

Es tut nichts, vielleicht, weil es die richtige Route nicht anruft? Wenn ich jedoch diese url: 'dashboard/tags/destroy/' + id, in diese url: '{{ URL::route('tagdestroy') }}' + id, ändern, wird es einen Fehler Missing required parameters for [Route: tagdestroy] [URI: dashboard/tags/destroy/{tag}]

zurückgeben Wo ist der falsche Teil mit dem Code? Dank

GELÖST

Verstanden arbeitet sich nun geändert, die URL-Aufruf in der Ajax-Funktion url: 'tags/destroy/' + id, statt url: 'dashboard/tags/destroy/' + id,. Ich habe keine Ahnung, warum es funktioniert, die Löschmethode URL ist immer noch definiert als Route::delete('dashboard/tags/destroy/{tag}', '[email protected]')->name('tagdestroy');, nicht Route::delete('tags/destroy/{tag}', '[email protected]')->name('tagdestroy');.

Antwort

0

Sie vermissen Params in Ihren benannten Routen.

+0

ich den Parameter 'url hat beinhalten: '{{URL :: Route (' tagdestroy ')}} '+ id, '. ID ist der Parameter. Vielleicht habe ich den Parameter falsch eingegeben? –

+0

Sie können es optional machen, dann können Sie es weitergeben, wie Sie erwähnt haben, aber Sie müssen Ihre Routen Dashboard/Tags/zerstören/{tag?} Durch diese –

+0

aktualisieren Ich habe die Route geändert, wie Sie zu Dashboard/Tags gesagt/destroy/{tag?} 'aber trotzdem tut es nichts. Ich stecke fest :( –

0

Erste URL funktionieren gut, denke ich. Überprüfen Sie sorgfältig id Parameter? Ich sehe in Ajax-Funktion, Sie haben es nicht deklariert. Sie rufen id in anderer Funktion auf?

+0

Ich habe es 'id = $ ('# id_delete'). Val();' –

+0

@SandraVioletta: Kannst du versuchen Sie 'Route :: post()' und in AJAX-Typ: "POST" ' –

+0

Versucht es aber immer noch nichts, kein Fehler nur nicht die Daten löschen –

0

Ist das Tag in Ihrer URI notwendig? Ich benutze es bei meinen Ajax-Calls wegzulassen und benutze es als POST-Parameter. Route:

Route::delete('dashboard/tags/destroy', '[email protected]')->name('tagdestroy'); 

Ajax-Aufruf:

$(document).on('click', '.delete-modal', function() { 
    $('.modal-title').text('Delete'); 
    $('#id_delete').val($(this).data('id')); 
    $('#title_delete').val($(this).data('title')); 
    $('#deleteModal').modal('show'); 
    id = $('#id_delete').val(); 
}); 
$('.modal-footer').on('click', '.delete', function() { 
    $.ajax({ 
     type: 'DELETE', 
     url: '{{route('tagdestroy')}}', 
     data: { 
      '_token': $('input[name=_token]').val(), 'id': id 
     }, 
     success: function (data) { 
      toastr.success('Successfully deleted Post!', 'Success Alert', {timeOut: 5000}); 
      $('.item' + data['id']).remove(); 
      $('.col1').each(function (index) { 
       $(this).html(index + 1); 
      }); 
     } 
    }); 
}); 

Controller:

+0

Ja, es muss bestimmt werden, welche Daten gelöscht werden, indem die ID als Parameter verwendet wird. –

+0

Habe es jetzt funktioniert, änderte den URL-Aufruf in der Ajax-Funktion zu 'url:' tags/destroy/'+ id' anstelle von 'url:' dashboard/tags/destroy/'+ id, '. Ich habe keine Ahnung, warum es funktioniert, wenn in der Route die URL immer noch als 'URL:' Dashboard/Tags/Destroy/{Tag} 'definiert ist. Wie auch immer, vielen Dank! –