Как вставить данные sessionStorage с помощью запроса ajax в Laravel?

Я очень новичок в этом запросе ajax с использованием laravel, и в настоящее время я застрял. У меня возникли проблемы со вставкой sessionStorage из базы данных.

Например, у меня есть здесь, в моем sessionStorage:

  Key      Value
=================
gclid      12345
token      abcde  

Я хочу получить значение для значений gclid или token с помощью ajax и сохранить его в базе данных.

Здесь, в моем ajax, у меня возникли проблемы с тем, как получить эти значения параметров и сохранить их в моем db. У меня есть это условие, чтобы получить key параметров, подобных этой логике:

Это в моем контроллере:

if(key == gclid)
   $traffic->traffic_type = $request->('gclid');
else if (key == token)
   $traffic->traffic_type = $request->('token');

Как мне передать эти переменные в мой jquery и добавить запрос в мой контроллер, чтобы получить его с помощью ajax?

var gclid = sessionStorage.getItem('gclid');
var token = sessionStorage.getItem('token');

Аякс

// Tracking Parameters
            function storeVisitorParameters() {
                let url = '{{ route('trackvisit') }}';

                var gclid = sessionStorage.getItem('gclid');
                var token = sessionStorage.getItem('token');
                
                const data = {};

                    $.ajax({
                        type: 'POST',
                        url: url,
                        data:data,
                        beforeSend: function (xhr) {
                            var token = $('meta[name="csrf-token"]').attr('content');
                            if (token) {
                                return xhr.setRequestHeader('X-CSRF-TOKEN', token);
                            }
                        },
                        complete: function() {
                        },
                        success: function (data) {
                            $.notify("Visitor Parameters Stored!", 'success');
                        },
                        error: function (xhr, ajaxOptions, thrownError) {
                            console.log('server errors', thrownError);
                        }
                    });
            }

TrafficController.php

class TrafficController extends Controller
{
    // Store gclid or token parameters to traffic_tacking_table
    public function storeVisitorParameters(Request $request) 
    {
        $traffic = new TrafficTracking();
        $traffic->user_id = $user->user_id;

        if($traffic->traffic_type = $request->gclid;) // check if key = gclid
        {
            $traffic->traffic_type = $request->gclid;   // store the key in db
            $traffic->traffic_value = $request->get('gclid');
        }
        else if ($traffic->traffic_type = $request->token) // check if key = token
        {
            $traffic->traffic_type = $request->token;   // store the key in db
            $traffic->traffic_value = $request->get('token');
        }

        $traffic->ip_address = $request->ip();
        $traffic->domain = $request->getHttpHost();
        $traffic->save();

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

web.php

Route::post('/trackvisit', 'TrafficController@storeVisitorParameters')->name('trackvisit');

миграция

 public function up()
    {
        Schema::create('traffic_tracking', function (Blueprint $table) {
            $table->increments('traffic_id');
            $table->string('ip_address');
            $table->string('traffic_type');
            $table->string('traffic_value');
            $table->integer('user_id');
            $table->timestamps();
        });
    }

моя главная цель - получить только значения sessionStorage и отправить запрос на мой контроллер.


person laurence keith albano    schedule 04.02.2021    source источник


Ответы (1)


В вашем php-контроллере измените этот if($traffic->traffic_type = $request->gclid;) на if($traffic->traffic_type == $request->gclid) , вы правильно сравниваете значения ?? Он должен быть двойным == и удалить ; внутри, если условие

В javascript поймать токен csrf как,

var _token = $('meta[name="csrf-token"]').attr('content');

В AJAX-запросе

dataType: 'JSON', // Add datatype as JSON, optional still for good practice
 data:{
  _token: _token,
  gclid: gclid,
  token: token
},

Внутри данных {} вы передаете значения (gclid, _token и ваш токен sessionStorage) в виде данных в формате JSON в контроллер laravel.

person iamawesome    schedule 04.02.2021
comment
Итак, когда я делаю запрос через контроллер для этого в ajax gclid: gclid, он должен быть $request->gclid правильно? - person laurence keith albano; 04.02.2021
comment
да, именно, левая сторона - ваш ключ, а правая сторона - значение, вместе одна пара... его формат JSON - person iamawesome; 10.02.2021