Rakesh Kohali
Rakesh Kohali

Reputation: 275

How to retrieve array of objects sent by Ajax in laravel

I am using Laravel with Vuejs and AXIOS for HTTP requests. I am sending a post request with the array of objects. So in my laravel store function how can I retrieve that data from the $request?

my questions array looks like:

             data:{
                questions:[{
                    question:'',
                    opt1:''
                            },
                     {
                 question:'',
                 opt1:''
                     }
                     ]
            }

Laravel Store method in controller:

  public function store(Request $request)
{
  return $request;

}

vue code:

axios.post('/addTest',this.$data.questions).then(response=>{
                    console.log(response.data);
                });

in this code questions is an array of objects.

Upvotes: 1

Views: 7238

Answers (2)

Roland
Roland

Reputation: 27719

In Laravel you have a store method and then you returning the request?Why you are doing that?To see the request from frontend? If so then I recommend you to use postman for this.

Postman is easy to use and you can send a similar request that frontend sends.Then in laravel store function you can do

dd($request) //to output the request that postman sends

You said: how can I retrieve that data from the $request

If you send from frontend something like

{ id: 1 }

Then in laravel you can do

$id = $request->get('id');

Below you can see how i send a request with postman,and how output the request.

Your request with postman

send request with postman

Laravel code to output request

laravel code to output the request

The response from Laravel displayed in postman

Postman output

Upvotes: 3

Risan Bagja Pradana
Risan Bagja Pradana

Reputation: 4674

If the this.$data.questions is an array, you can simply use the input() method to pull all of the questions:

$questions = $request->input();

Let say you only want to pull the question property of the second item, you can do it like so in Laravel:

$secondQuestion = $request->input('1.question');

However, it would also be nice if you pass the questions as an object:

axios.post('/addTest', { questions: this.$data.questions });

And your PHP part will look like this:

$questions = $request->input('questions');

Hope this gives you some ideas.

Upvotes: 0

Related Questions