Meine Frage betrifft das Hochladen von Fotos mit Ajax.

Das ist meine Klinge:

<section class="panel">
    <header class="panel-heading">
        Medya Ekle
    </header>
    <div class="panel-body">
        <form class="form-horizontal tasi-form" id="upload_form" method="post" enctype="multipart/form-data">
            {{csrf_field()}}
            <div class="form-group">
                <label class="col-sm-2 control-label">Medya Başlığı *</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control mediaTitleTxt" name="mediaTitleTxt" autocomplete="off" required>
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-2 control-label">Medya *</label>
                <div class="col-sm-10">
                    <input type="file" class="form-control mediaInput" name="mediaInput" autocomplete="off" required>
                </div>
            </div>

            <div class="form-group">
                <div class="col-sm-12">
                    <button class="btn btn-success pull-right addMediaBtn">Ekle</button>
                </div>
            </div>
        </form>
    </div>
</section>

<section class="panel tasks-widget">
    <header class="panel-heading">
        Medyalar
    </header>
    <div class="panel-body">

    </div>
</section>

<!--main content end-->

Dies ist mein JS-Code:

let form = $("#upload_form");
form.on("submit", function (e) {
    e.preventDefault();
    $.ajax({
        url:"/api/media/create",
        method:"POST",
        data:new FormData(this),
        dataType:'JSON',
        contentType: false,
        cache: false,
        processData: false,
        success:function(data)
        {
            console.log(data);
        }
    });
});

Dies ist meine Routen / api.php:

Route::post("media/create", "api@createMedia");

Das ist mein Controller:

public function createMedia(Request $request){
    //TODO Upload image
    return [$request];
}

Wenn ich auf die Schaltfläche "Senden" klicke, wird folgende Fehlermeldung angezeigt:

MethodNotAllowedHttpException in der Zeile RouteCollection.php 251

Ich kann es nicht herausfinden. Wie kann ich das lösen?

0
M. Özdemir 19 Jän. 2019 im 14:35

3 Antworten

Beste Antwort

Es ging um die alte jQuery-Version. Ich ändere die jQuery-Version und das Problem wurde gelöst. Danke fürs Helfen.

0
M. Özdemir 21 Jän. 2019 im 10:22

Könnten Sie versuchen, diese Route in web.php einzufügen? Rufen Sie es dann von dort aus auf, ohne das / api / in den Link aufzunehmen

0
Kneegrows 19 Jän. 2019 im 13:05

Für alle, die sich fragen: Das Problem ist, dass er irgendwann GET in seinem Code verwendet hat, aber er hat es inzwischen behoben und es funktioniert. Weitere Informationen finden Sie in den Kommentaren zu seiner Frage. Einige allgemeine Hinweise, nachdem ich die Fragen und vorgeschlagenen Antworten gesehen habe:

  1. Allgemeine Informationen zu Laravel-Routen finden Sie in den Dokumenten: https://laravel.com/docs/5.7/ Routing (Stellen Sie sicher, dass Sie die eine Version verwenden, die Ihrer Laravel-Version entspricht.)
  2. In api.php definierte API-Routen stellen api / immer automatisch voran, sodass Sie dies nicht speziell in die Routendateien eingeben müssen
  3. Führende / In-Routen sind nicht erforderlich. Auf Route::get("api/test", function(){}); kann über /api/test zugegriffen werden.
  4. Der Versuch, mit /api/test/ darauf zuzugreifen, führt jedoch zu einer MethodNotAllowedException, da Laravel davon ausgeht, dass nach / etwas als get-Parameter folgt. Also sei vorsichtig :)
0
François L 19 Jän. 2019 im 13:34