데이터를 json으로 보낼 때 jQuery Form Data의 괄호 문제
나는 목적을 가지고 있습니다.
var dataformdata={"key1":"value1","key2":"value2"};
그런 다음 같은 키(키3)로 값을 몇 개 더 추가합니다.
dataformdata.key3 = [];
dataformdata.key3.push("value3");
dataformdata.key3.push("value4");
저는 각 경사면에서 위와 같은 작업을 합니다.브라우저 콘솔의 jQuery ajax 함수를 통해 데이터 양식 데이터 개체를 전송할 때를 제외하고 모두 작동합니다. 키에 괄호가 있습니다...
$.ajax({ type: "POST", url: "/", data: dataformdata,
...
브라우저 콘솔에 표시되는 내용은 다음과 같습니다.
key1:value1
key2:value2
key3%5B%5D:value3
key3%5B%5D:value4
jQuery.jax() 문서에 다음과 같이 표시되므로 작동해야 합니다.
개체는 키/값 쌍이어야 합니다.값이 배열인 경우 jQuery는 기존 설정 값을 기준으로 동일한 키로 여러 값을 직렬화합니다.
그런데 왜 괄호(%5B%5D)가 열쇠 안에 있습니까?
당신은 또한 사용할 수 있습니다.traditional
http://api.jquery.com/jquery.ajax/ #jQuery-ajax-settings 호출의 설정
기존 유형: 부울
기존 방식의 매개 변수 직렬화를 사용하려면 이 값을 true로 설정합니다.
예:
$.ajax({
/*usual stuff */
traditional: true
})
키에 괄호가 있는 이 표기법은 다차원 배열 또는 객체(또는 다른 배열)를 포함하는 배열 자체를 다루기 위해 jQuery 1.4에서 도입되었습니다.이는 역직렬화기가 배열과 원시 값을 구별하는 데 도움이 됩니다.예를 들어 키에 괄호가 없는 경우 두 변수는 동일한 방식으로 직렬화됩니다.
var v1 = { "k1":"v1", "k2":"v2", "k3":["v3"] };
그리고.
var v1 = { "k1":"v1", "k2":"v2", "k3":"v3" };
괄호 표기법으로 다음과 같이 인코딩됩니다.
k1=v2&k2=v2&k3[]=v3
그리고.
k1=v2&k2=v2&k3=v3
각각 다음과 같다.
동일한 키 이름을 가진 여러 데이터를 스크립트로 전송할 수 있습니다.대괄호를 추가하여 이 작업을 수행할 수 있습니다.[]
데이터를 배열로 해석해야 함을 지정하기 위해 키 이름의 끝으로 이동합니다.
이를 수행하는 함수는 다음과 같습니다.
$.param({
data: ['value3', 'value4']
});
data
배열입니다.직렬화되면 다음과 같이 렌더링됩니다.data%5B%5D=value3&data%5B%5D=value4
서버측 스크립트는 이를 배열로 변환합니다.
이것은 대부분 키를 나타내는 명명 규칙입니다. 제 생각에는 PHP에서 온 것 같습니다.key3
)은 다중값입니다.이것들을 의미 있게 해독하는 것은 서버에 달려 있습니다.
더 자세한 정보: http://api.jquery.com/jQuery.param/
언급URL : https://stackoverflow.com/questions/6011284/issue-with-brackets-in-jquery-form-data-when-sending-data-as-json
'prosource' 카테고리의 다른 글
Visual Studio:GIT 플러그인에 대한 리포지토리의 기본 경로 변경 (0) | 2023.08.26 |
---|---|
폼의 입력 요소 내부에 아이콘 삽입 (0) | 2023.08.26 |
도커 컨테이너의 /dev/shm 크기를 늘리는 방법 (0) | 2023.08.26 |
jQuery 유효성 검사 플러그인을 사용한 라디오 버튼 그룹 유효성 검사 (0) | 2023.08.26 |
SQL 쿼리 질문: SELECT... 입력 (0) | 2023.08.26 |