2012-05-28 2 views
1

json 데이터를 사용하는 API를 조합하려고 시도하고 있으며 변수 유형을 보존하는 데 문제가 있습니다.쿼리 문자열에 유형을 보존하는 방법

주의 :

data[0][input][] 0 
data[0][input][] 1 
data[0][input][] 0 
data[0][output][] 1 
data[0][output][] 1 
data[1][input][] 1 
data[1][input][] 0 
data[1][input][] 0 
data[1][output][] 1 
data[1][output][] 0 
id     string 
: 그 데이터로 JQuery와 아약스 POST 요청을 할 때

{ 
    id: "string", 
    data: [ 
    {input: [0,1,0], output: [1,1]}, 
    {input: [1,0,0], output: [1,0]} 
    ] 
} 

이로 옮겨진한다 : 나는 데이터를 감안할 때 Node.js를

을 사용하고 있습니다

또는 : id=string&data%5B0%5D%5Binput%5D%5B%5D=0&data%5B0%5D%5Binput%5D%5B%5D=1&data%5B0%5D%5Binput%5D%5B%5D=0&data%5B0%5D%5Boutput%5D%5B%5D=1&data%5B0%5D%5Boutput%5D%5B%5D=1&data%5B1%5D%5Binput%5D%5B%5D=1&data%5B1%5D%5Binput%5D%5B%5D=0&data%5B1%5D%5Binput%5D%5B%5D=0&data%5B1%5D%5Boutput%5D%5B%5D=1&data%5B1%5D%5Boutput%5D%5B%5D=0

내가 할 수 있어야하는 것은 서버 측이지만 데이터의 내 배열 값이 모두 인 문자열로 변환됩니다.

"문자열"또는 "int"등의 값 유형을 보존하는 기술이 있습니까?

현재 POST 요청 본문을 구문 분석하기 위해 npm에 qs 모듈을 사용하고 있습니다.

답변

3

JQuery는 AJAX 요청의 data 옵션에서 전달 된 모든 객체를 application/x-www-form-urlencoded 형식 (일련의 쿼리 문자열)으로 직렬화합니다. 원하는 것은 JSON.stringify()이고, 결과 문자열은 data으로 전달하고, Content-Type을 이전 답변과 같이 설정합니다.

dataType 옵션 JQuery와, 요청 본문을 인코딩하지 않는 방법 (나는이 일에 의해 불에 왔) 요청에 대한 응답 처리 방법을 지정 것을 기억하십시오.

1

JSON 서버이므로 POST 요청에서 Content-Type : application/json을 설정하면 문자열이 아닌 객체를 파싱하게됩니다. 개체는 데이터 형식을 유지합니다. 서버에서 req.is ('application/json')을 사용하여 요청의 유형이 'application/json'인지 확인하십시오.

0

다음은 유용한 해결책입니다. 도움이 되길 바랍니다.

$.ajax({ 
    type: 'POST', 
    data: JSON.stringify(data), 
    contentType: 'application/json', 
    url: 'http://localhost:3000/endpoint',      
    success: function(data) { 
     //TODO: do something with data 
    } 
}); 
관련 문제