문제

방법은 없을 만들기 query parameters 위치 GET 요청 에서 JavaScript?

에서처럼 Python 신 urllib.urlencode(), 는 사전에서(또는 목록의 두 개의 튜플)을 만들고 문자열 'var1=value1&var2=value2'.

도움이 되었습니까?

해결책

여기:

function encodeQueryData(data) {
   const ret = [];
   for (let d in data)
     ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));
   return ret.join('&');
}

사용법:

const data = { 'first name': 'George', 'last name': 'Jetson', 'age': 110 };
const querystring = encodeQueryData(data);

다른 팁

기능

function encodeData(data) {
    return Object.keys(data).map(function(key) {
        return [key, data[key]].map(encodeURIComponent).join("=");
    }).join("&");
}   

Zabba 서 제공하신 의견에 현재는 수락 응답이 제안하는 나에게 최고의 솔루션:사 jQuery.param().

내가 사용하는 경우 jQuery.param() 의 데이터 원래의 질문에,다음의 코드 간단히:

const params = jQuery.param({
    var1: 'value',
    var2: 'value'
});

변수 params 될 것입

"var1=value&var2=value"

더 복잡한 예를 입력 및 출력을 볼 jQuery.param() 문서입니다.

URLSearchParams 가 증가하고 브라우저 지원합니다.

const data = {
  var1: 'value1',
  var2: 'value2'
};

const searchParams = new URLSearchParams(data);

// searchParams.toString() === 'var1=value1&var2=value2'

Node.js 제공하는 쿼리 문자열 모듈입니다.

const querystring = require('querystring');

const data = {
  var1: 'value1',
  var2: 'value2'
};

const searchParams = querystring.stringify(data);

// searchParams === 'var1=value1&var2=value2'

arg.js, 프로젝트 목표로 이러한 문제를 해결 한다.그것은 전통적으로 그렇게 어렵지만 이제 당신이 할 수 있는 일:

var querystring = Arg.url({name: "Mat", state: "CO"});

고 작품을 읽고:

var name = Arg("name");

또는 전체를 많이:

var params = Arg.all();

과 당신의 차이에 대해 걱정 ?query=true#hash=true 다음을 사용할 수 있습니다 Arg.query()Arg.hash() 방법이 있습니다.

이 작업을 수행해야 합니다:

const createQueryParams = params => 
      Object.keys(params)
            .map(k => `${k}=${encodeURI(params[k])}`)
            .join('&');

예제:

const params = { name : 'John', postcode: 'W1 2DL'}
const queryParams = createQueryParams(params)

결과:

name=John&postcode=W1%202DL

를 사용하는 경우 Prototype형태입니다.직렬화

를 사용하는 경우 jQueryAjax/직렬화

나의 독립적 기능을 수행하도 하지만,google 검색에 대한 그것을 발견되는 몇 가지 유망한 옵션이 있지 않다면 현재 사용하고 있습니다.지 않는 경우,하지만,당신이 정말로 해야 하기 때문에 그들은 천국입니다.

처럼 방문하는 이는 거의 10 년 오래된 질문입니다.에서 이 시대의 off-the-shelf 프로그래밍,당신의 최선의 방법 설정하는 것이 귀하의 프로젝트를 사용하여 종속성 관리자(npm).이 코티지 전체 산업의 라이브러리가 인코딩하는 쿼리 문자열을 가지 경우.이것은 하나의 더 인기 있는 것들-

https://www.npmjs.com/package/query-string

ES2017(ES8)

Object.entries(), 는 배열을 반환합체의 [key, value] 쌍이다.예를 들어, {a: 1, b: 2} 그것은 반환 [['a', 1], ['b', 2]].그것은 지원되지 않음(수 없)에 의해서만 IE.

코드:

const buildURLQuery = obj =>
      Object.entries(obj)
            .map(pair => pair.map(encodeURIComponent).join('='))
            .join('&');

예제:

buildURLQuery({name: 'John', gender: 'male'});

결과:

"name=John&gender=male"

조금 수정하여 타이프 라이터:

  public encodeData(data: any): string {
    return Object.keys(data).map((key) => {
      return [key, data[key]].map(encodeURIComponent).join("=");
    }).join("&");
  }

스레드 포인트는 일부 코드를 탈출을 위한 Url php.가 escape()unescape() 는 것이 대부분의 작업을 수행 할,하지만 당신은 필요한 추가 몇 가지 여분의 것들입니다.

function urlencode(str) {
str = escape(str);
str = str.replace('+', '%2B');
str = str.replace('%20', '+');
str = str.replace('*', '%2A');
str = str.replace('/', '%2F');
str = str.replace('@', '%40');
return str;
}

function urldecode(str) {
str = str.replace('+', ' ');
str = unescape(str);
return str;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top