prosource

데이터를 json으로 보낼 때 jQuery Form Data의 괄호 문제

probook 2023. 8. 26. 11:58
반응형

데이터를 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)가 열쇠 안에 있습니까?

당신은 또한 사용할 수 있습니다.traditionalhttp://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

반응형