Ajax를 사용한 비동기 통신에서 processData : false를 작성했기 때문에 매개 변수가 날리지 않았기 때문에

막힌 곳



다음과 같이 processData: false를 작성했기 때문에 data의 {category: hoge}를 보낼 수 없습니다. processData : false에 대해 조사한 것을 메모합니다.
      $.ajax({
        url: '/urls/research/',
        type: 'GET',
        data: {category: hoge},
        dataType: 'json',
        // processData: false  ← falseにしていたためにcategoryパラメータが送れなかった
        contentType: false
      })

환경



Ruby: 2.3.1
Rails: 5.0.1

processData 정보



data에 지정된 객체를 쿼리 문자열로 변환할지 여부를 설정합니다. 기본값은 true이며 자동으로 "application/x-www-form-urlencoded"형식으로 변환합니다. DOMDocument 자체와 같이 다른 형식으로 데이터를 보내기 위해 자동 변환을 원하지 않는 경우 false를 지정합니다. (인용: 일본어 참조 )

결론부터 말하면



HTTP 통신으로 GET 시에는 processData를 지정하지 않고 초기값 true를 이용하고 POST 시에는 processData: false를 지정합니다.

상세



data로 지정한 객체(맨 위의 예에서는 category:hoge)를 쿼리 문자로 변환할지 여부입니다. (쿼리란, 검색을 행할 때의 검색 조건을 말하며, 쿼리 문자열이란 검색 조건에 필요한 문자열을 말한다. 녀석이야.)

실제로 type: 'GET'에 고정하여 processData의 값을 바꾸어 본다.


  • processData를 지정하지 않고 초기값의 true를 이용한 경우


  • search/? 뒤의 category 변수에 저장된 hoge가 반환되고 있음을 알 수 있습니다.
  • processData : false를 지정하면


  • HTTP 메서드가 GET임에도 불구하고 data에 지정된 객체를 쿼리 문자열로 변환하지 않기 때문에 search 뒤에 아무것도 없다는 것을 알 수 있습니다.

    지적이 있으면 코멘트란에서 지적해 주시면 감사하겠습니다.

    좋은 웹페이지 즐겨찾기