Отправка данных из JavaScript в Laravel Controller - PullRequest
0 голосов
/ 04 марта 2019

У меня проблема с отправкой данных из javascript на мой контроллер.Есть мой Ajax :

var point = JSON.stringify(points);

function onBtnClick() {
    $.ajaxSetup({
      header:{
        'X-CSRF-TOKEN':$('meta[name="csrf-token"]').attr('content')
      }
    });

    $.post('http://localhost/updateC', {
        data: point,
        dataType: 'json', 
        contentType:'application/json', 
    })
    .done(function() {
        alert('success');
    })
    .fail(function() {
        alert("error");
    });

}

Маршруты:

Route::get('/home', 'HomeController@index')->name('home');
Route::resource('/races','RacesController');
Route::post('updateC', 'RacesController@Points');

А есть мой RacesController:

public function Points(Request $request) {
    $test = $request->input('data');
    return "$test";
}

И ошибка говорит о том, что была заблокирована CORS-политиками.

Ответы [ 4 ]

0 голосов
/ 05 марта 2019

код Ajax

var abc = 'hello world';

$.ajax({
    type: "GET",
    url: 'http://your url',
    data : { abc : abc }
    success: function (data) {

        // write your code
    },
    error: function (data) {
        // write your code
    }
});
0 голосов
/ 04 марта 2019

Вы должны добавить токен csrf в свойстве data сообщения ajax, например:

data: {
    "_token": "{{ csrf_token() }}",
    "point": point
}
0 голосов
/ 04 марта 2019
app/Http/Middleware/VerifyCsrfToken.php

и добавьте этот маршрут в массив исключений

protected $except = [
   'updateC'
];
0 голосов
/ 04 марта 2019

Перейдите в папку промежуточного программного обеспечения, файл verifycsrftoken,

app/Http/Middleware/VerifyCsrfToken.php

и добавьте этот URL-адрес в массив исключений

protected $except = [
   ....
   http://localhost/updateC
];

, чтобы обработать исключения для ваших запросов постов ajax, после чего вы можетезатем используйте пакет

Barryvdh Laravel Cors , чтобы избавиться от проблемы cors,

, если вы используете laravel 5.6, вам не нужен пакет COR для этого,

просто создайте промежуточное ПО CORs

namespace App\Http\Middleware;
use Closure;
class Cors {

    public function handle($request, Closure $next) {
        $allowedOrigins = ['http://oursite.com', '*.myost.net','*','www.aminu.*'];
        $origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
        if (in_array($origin, $allowedOrigins)) {
            return $next($request)
                ->header('Access-Control-Allow-Origin', $origin)
                ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
                ->header('Access-Control-Allow-Headers',' Origin, Content-Type, Accept, Authorization, X-Request-With, cache-control,postman-token, token')
                ->header('Access-Control-Allow-Credentials',' true');
        }
        return $next($request);
    }
}

и добавьте промежуточное ПО в файл kernel.php

protected $middleware = [
    ......
    \App\Http\Middleware\Cors::class, //added here
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...