Frage jQuery Ajax POST-Anfrage wird als GET mit Laravel gesendet


Ich habe ein paar Probleme mit Ajax. Mein Projekt ist in Laravel 5 und es läuft weiter Apache und rewrite ist aktiviert und die VerifyCsrfToken Middleware ist vorhanden. Ich versuche eine POST-Anfrage an eine andere Route in meinem Projekt zu senden. So sieht mein Ajax aus:

$.ajax({
    url: '/add-device/',
    type: 'POST',
    data: form_data,
    success: function(data)
    {
        console.log(data);
    },
        error: function(data)
    {
        console.log(data);
    }
});

Wenn ich auf den Knopf klicke, der diesen Ajax auslöst, bekomme ich einen 405: MethodNotAllowed Antwort. Also ging ich hinein routes.php und ich habe eine GET-Route hinzugefügt. Ich habe auch meine POST-Route aufgenommen:

Route::get('add-device', function()
{
    return 'hello';
});

Route::post('add-device', [
    'middleware' => 'auth',
    'uses' => 'FormController@add_device'
]);

Ich bekomme die 'Hallo' Nachricht, also wird diese als GET anstelle von POST gesendet. Ich habe versucht zu verwenden $.post Anstatt von $.ajax den POST zu erzwingen, aber ich bekomme immer noch das gleiche Verhalten. Für ein gutes Maß, hier ist mein .htaccess Datei:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Ich habe auch versucht, die Ajax ohne den Schrägstrich wegen der Rewrite-Regel (/add-device) aber ich bekomme die gleiche 'Hallo' Nachricht.

Ich habe alle meine Ajax-Anfragen (halbes GET, halb POST) während der Entwicklung getestet und sie funktionierten gut, während sie bedient wurden artisan. Ich habe dieses Problem erst nach dem Wechsel bekommen Apache. Ich bin in die QA-Phase meines Projekts eingetreten und habe das Projekt auf unseren Entwicklungsserver verlagert, der läuft Apache 2.4.10 auf Debian 8.

Hat jemand irgendwelche Ideen, was passiert und wie man es löst?


Zusätzlicher Inhalt

Exception trace:
 () at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:901
 Illuminate\Foundation\Application->abort() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:21
 abort() at /home/debian/public_html/ZipPrinter/app/Handlers/Events/AbortTheRequest.php:28
 App\Handlers\Events\AbortTheRequest->handle() at n/a:n/a
 call_user_func_array() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php:327
 Illuminate\Events\Dispatcher->Illuminate\Events\{closure}() at n/a:n/a
 call_user_func_array() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php:218
 Illuminate\Events\Dispatcher->fire() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:650
 event() at /home/debian/public_html/ZipPrinter/app/Services/ZipHelper.php:56
 App\Services\ZipHelper->__construct() at /home/debian/public_html/ZipPrinter/app/Services/DashHelper.php:43
 App\Services\DashHelper->__construct() at /home/debian/public_html/ZipPrinter/app/Http/Controllers/DashController.php:28
 App\Http\Controllers\DashController->__construct() at n/a:n/a
 ReflectionClass->newInstanceArgs() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Container/Container.php:817
 Illuminate\Container\Container->build() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Container/Container.php:656
 Illuminate\Container\Container->make() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:644
 Illuminate\Foundation\Application->make() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:161
 Illuminate\Foundation\Console\RouteListCommand->getControllerMiddleware() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:142
 Illuminate\Foundation\Console\RouteListCommand->getMiddleware() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:109
 Illuminate\Foundation\Console\RouteListCommand->getRouteInformation() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:89
 Illuminate\Foundation\Console\RouteListCommand->getRoutes() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:75
 Illuminate\Foundation\Console\RouteListCommand->fire() at n/a:n/a
 call_user_func_array() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Container/Container.php:523
 Illuminate\Container\Container->call() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Console/Command.php:115
 Illuminate\Console\Command->execute() at /home/debian/public_html/ZipPrinter/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:257
 Symfony\Component\Console\Command\Command->run() at /home/debian/public_html/ZipPrinter/vendor/laravel/framework/src/Illuminate/Console/Command.php:101
 Illuminate\Console\Command->run() at /home/debian/public_html/ZipPrinter/vendor/symfony/console/Symfony/Component/Console/Application.php:874

7
2018-05-06 17:51


Ursprung


Antworten:


Also entfernte ich den Schrägstrich und es funktionierte plötzlich. Ich bin mir nicht sicher, warum genau das passiert ist, aber es ist passiert. Ich habe diese Frage gestellt Laracasten auch. Ich würde denjenigen, die das gleiche Problem haben, empfehlen, die Kommentare und diesen anderen Thread zu lesen, damit sie meinen Schritten folgen können. Ich glaube, einer meiner vorherigen Schritte hat ein Problem gelöst, so dass es funktionierte, als ich den Schrägstrich diesmal entfernte. Vielen Dank für Ihre Hilfe!


7
2018-05-07 16:23



Probieren Sie dies für Ihre Post-Route

Route::post('add-device', [
    'as' => 'add_device.post'
    'middleware' => 'auth',
    'uses' => 'FormController@add_device'
]);

-1
2018-05-06 18:32