Axios get in url hoạt động nhưng với tham số thứ hai là đối tượng thì không


121

Tôi đang cố gắng gửi yêu cầu GET dưới dạng tham số thứ hai nhưng nó không hoạt động trong khi nó hoạt động dưới dạng url.

Điều này hoạt động, $ _GET ['naam'] trả về kiểm tra:

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})
      })
  }
};

Nhưng khi tôi thử điều này, không có gì $_GETcả:

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})
      })
  }
};

Tại sao tôi không thể làm điều đó? Trong tài liệu, nó nói rõ ràng là có thể. Với $_POSTnó cũng không hoạt động.

Câu trả lời:


298

axios.get chấp nhận cấu hình yêu cầu làm tham số thứ hai (không phải tham số chuỗi truy vấn).

Bạn có thể sử dụng paramstùy chọn cấu hình để đặt tham số chuỗi truy vấn như sau:

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

11
Làm cách nào để giải nén nó ở phía máy chủ?
Mustafa Mamun

1
@zero_cool bạn không cần phải params truy cập, đây wrt Ví dụ, bạn có thể truy cập "foo" và nó sẽ trở lại "thanh"
Ashutosh Raj

Giải nén ở phía máy chủ là điểm quan trọng ở đây, tôi chắc chắn bạn có thể sử dụng string foo làm tham số cho phương thức của bạn ở phía máy chủ, nhưng tôi không chắc chắn làm thế nào để lấy tất cả các tham số cùng một lúc dưới dạng đối tượng bên trong phương thức phía máy chủ của bạn. bất kỳ manh mối? Tôi đang cố gắng nhận trợ giúp từ url này stackoverflow.com/questions/55602990/…
Kurkula

86

Trên khách hàng:

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

Trên máy chủ:

function get(req, res, next) {

  let param = req.query.foo
   .....
}

1
@danikorean, chúng ta có thể viết mã cùng một khách hàng mà không sử dụng yêu cầu phương pháp bí danh, tức là thay vì axios.getchỉ sử dụngaxios({url:"url_goes_here",data:{params:{foo:'bar'}})
srbcheema1

1
Mã máy chủ này đã giúp tôi tiết kiệm hàng giờ, cảm ơn bạn! Đối với bất kỳ ai thắc mắc, hãy chọn 'params' cho cuộc gọi .get, chứ không phải 'body' như bạn có thể đã thấy khi tìm kiếm xung quanh. Bạn có thể đặt lại tên cho nó bất cứ thứ gì ở phía máy chủ nếu bạn muốn, nhưng hãy giữ lại các thông số cho khách hàng nhận được.
DORRITO

axios.get('/api', { params}) ! ==axios.get('/api', params)
xgqfrms
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.