【问题标题】:How to insert sessionStorage data using ajax request in Laravel?如何在 Laravel 中使用 ajax 请求插入 sessionStorage 数据?
【发布时间】:2021-05-08 15:37:57
【问题描述】:

我对使用 laravel 的这个 ajax 请求非常陌生,目前我被卡住了。我无法从数据库中插入 sessionStorage。

例如,我的 sessionStorage 中有这里:

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

我想使用 ajax 获取 gclidtoken 的值并将其存储在数据库中。

在我的 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');

Ajax

// 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 值并向我的控制器发送请求。

【问题讨论】:

    标签: php jquery ajax laravel laravel-request


    【解决方案1】:

    在您的 php 控制器中,将此 if($traffic->traffic_type = $request->gclid;) 更改为 if($traffic->traffic_type == $request->gclid) ,您是在比较值吗?它应该是双 == 并在 if 条件内删除 ;

    在 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
    },
    

    在 data {} 中,您将值(gclid、_token 和您的 sessionStorage 令牌)作为 JSON 格式的数据传递给 laravel 控制器

    【讨论】:

    • 所以当我通过控制器在 ajax gclid: gclid 中向这个控制器发出请求时,它应该是 $request->gclid 对吧?
    • 没错,左边是你的key,右边是value,在一起是一对……它的JSON格式
    猜你喜欢
    • 2018-02-07
    • 1970-01-01
    • 2018-06-23
    • 2020-11-13
    • 1970-01-01
    • 2016-06-05
    • 2019-10-16
    • 1970-01-01
    • 2018-01-25
    相关资源
    最近更新 更多