Как передать массив в ajax и получить доступ в контроллере laravel - PullRequest
0 голосов
/ 08 мая 2020

Я хочу передать данные массива контроллеру от laravel до ajax. Вот мой метод контроллера.

public function Verify(Request $request) {
        $this->validate($request, [
            'first_name' => 'required',
            'middle_name' => 'required',
            'last_name' => 'required',
            'email' => 'email:rfc,dns',
            'areacode' => 'required|digits:2',
            'phonenumber' => 'required|digits:7',
            'streetaddress' => 'required',
            'streetaddressline_2' => 'required',
            'city' => 'required',
            'province' => 'required',
            'postcode' => 'required',
            'country' => 'required',
        ]);

        $input = $request->all();

        $customer = new Customer();
        $customer->name = $input['first_name'] . ' ' . $input['middle_name'] . ' ' . $input['last_name'];
        $customer->email = $input['email'];
        $customer->contactno = $input['areacode'] . $input['phonenumber'];
        $customer->streetaddress = $input['streetaddress'];
        $customer->streetaddressline_2 = $input['streetaddressline_2'];
        $customer->city = $input['city'];
        $customer->province = $input['province'];
        $customer->postcode = $input['postcode'];
        $customer->country = $input['country'];

        $customer->save();

        $order = new \App\Order();
        $order->status = 'pending';
        $order->customer_id = $customer->id;
        $order->save();

        $productsIds = session()->get('products.id');

        for ($i = 0; $i < count($productsIds); $i++) {
            $orderproduct = new OrderProduct();
            $orderproduct->order_id = $order->id;
            $orderproduct->product_id = $productsIds[$i];
            $orderproduct->save();
        }

        Mail::to('irfan.elahi187@gmail.com')->send(new \App\Mail\OrderCreated($customer));

//        session()->put('products.id', []);

        return redirect('/createpayment');


    }

Мой веб-маршрут -

Route::post('/verifydata', 'HomeController@verify')->name('verify');

, а ниже приведен мой файл javascript, в котором дан вызов ajax

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

function getCustomerInfo() {
    var first_name = document.getElementById('fname').value;
    var middle_name = document.getElementById('mname').value;
    var last_name = document.getElementById('lname').value;
    var email = document.getElementById('email').value;
    var areacode = document.getElementById('areacode').value;
    var phonenumber = document.getElementById('phonenumber').value;
    var streetaddress = document.getElementById('streetaddress').value;
    var streetaddressline_2 = document.getElementById('streetline2').value;
    var city = document.getElementById('city').value;
    var province = document.getElementById('province').value;
    var postcode = document.getElementById('zip').value;
    var country = document.getElementById('country').value;

    var customer_data = {
        first_name: first_name,
        middle_name: middle_name,
        last_name: last_name,
        email: email,
        areacode: areacode,
        phonenumber: phonenumber,
        streetaddress: streetaddress,
        streetaddressline_2: streetaddressline_2,
        city: city,
        province: province,
        postcode: postcode,
        country: country
    };

    console.log(customer_data);

    if (
            first_name &&
            middle_name &&
            last_name &&
            areacode &&
            phonenumber &&
            streetaddress &&
            streetaddressline_2 &&
            city &&
            province &&
            postcode &&
            country
            ) {
        $.ajax('/verifydata',
                {
                    method: 'POST',
                    dataType: 'json', // type of response data
                    success: function () {   // success callback function
                        alert('success');
                    },
                    error: function () { // error callback 
                        alert('error');
                    }
                });

    } else {
        document.getElementById('error-message').style.display = 'block';
    }
};

customer_data - это мой массив, и я хочу передать его методу контроллера (указанному выше) через ajax. Я нахожусь на стадии обучения и хочу узнать, как массивы проходят через ajax. Как я могу это сделать?

...