Sinan Samet
Sinan Samet

Reputation: 6752

Axios get in url works but with second parameter as object it doesn't

I'm trying to send GET request as second parameter but it doesn't work while it does as url.

This works, $_GET['naam'] returns test:

export function saveScore(naam, score) {
  return function (dispatch) { 
    axios.get('http://****.nl/****/gebruikerOpslaan.php?naam=test')
      .then((response) => {
        dispatch({type: "SAVE_SCORE_SUCCESS", payload: response.data})
      })
      .catch((err) => {
        dispatch({type: "SAVE_SCORE_FAILURE", payload: err})
      })
  }
};

But when I try this, there is nothing in $_GET at all:

export function saveScore(naam, score) {
  return function (dispatch) { 
    axios.get('http://****.nl/****/gebruikerOpslaan.php',
    {
        password: 'pass',
        naam: naam,
        score: score
    })
      .then((response) => {
        dispatch({type: "SAVE_SCORE_SUCCESS", payload: response.data})
      })
      .catch((err) => {
        dispatch({type: "SAVE_SCORE_FAILURE", payload: err})
      })
  }
};

Why can't I do that? In the docs it clearly says it's possible. With $_POST it doesn't work either.

Upvotes: 259

Views: 467462

Answers (4)

danikoren
danikoren

Reputation: 4301

On client:

axios.get('/api', {
  params: {
    foo: 'bar',
  },
});

On server:

function get(req, res, next) {
    
  let param = req.query.foo
  // ...
}

Upvotes: 174

Nika Nishnianidze
Nika Nishnianidze

Reputation: 13

This works fine for me. When it is post request nested data object isn't needed but in get requests, in order to send data, you need it.

axios.get('/api', {
    data: {
        foo: 'bar'
    }
}

Upvotes: -2

cormacncheese
cormacncheese

Reputation: 1729

For me I was trying to send params using axios.post.

When switch both client and server to axios.get, req.query.foo worked like a charm

Upvotes: 0

Nick Uraltsev
Nick Uraltsev

Reputation: 25907

axios.get accepts a request config as the second parameter (not query string params).

You can use the params config option to set query string params as follows:

axios.get('/api', {
  params: {
    foo: 'bar'
  }
});

Upvotes: 552

Related Questions