2012-07-12 2 views
0

내 URL에 대한 쿼리 문자열을 구축하고 인코딩에서 특정 문자를 제외해야합니다. 그래서거기 encodeURIComponent에서 특정 문자를 제외하는 방법입니다

첫번째 = ㅋ & 초 = ㅋ 그리고 ....

I :

는 내가 "&"및 "="나는 다음과 같은 성명을 발표 할 수 있도록를 제외 할 가장 좋은 방법은 그것을 인코딩하지 못하게하는 것입니다.

일부 코드 :

else if (array[i].nodeName == "SELECT") { 
    if (array[i].id == "multiple") { 
    var selected = $.map($('#multiple option:selected'), 

    function (e) { 
     return $(e).val(); 
    }); 
    $.each(selected, function (index, value) { 
     name = array[i].name; 
     values += app + "\&" + key + "="; 
    }); 

    } else { 
    name = arr[i].name; 
    values = arr[i].value; 
    } 
} 

key = encodeURIComponent(name); 
value = encodeURIComponent(values); 
queryString += name + "=" + values + "&"; 

답변

1

encodeURIComponent에서 특정 문자를 제외 할 수있는 방법이 있습니까?

아니요. 정확히 하나의 인수를 취하는 내장 함수입니다.


당신은 간단한 솔루션을 결합하기 전에 각각의 이름과 값을 인코딩하는 것입니다 그래서이 키 또는 값의 중간에 나타날 때 &를 인코딩 할 필요가 없습니다.

function emit(name, value) { 
    queryString += (queryString.indexOf("?") >= 0 ? "&" : "?") 
    + encodeURIComponent(name) + "=" + encodeURIComponent(value); 
} 

을 정의한 다음 여러 선택 항목의 각 이름/값 쌍에 대해 해당 함수를 호출합니다. 제대로 #, = 또는 기타 필요한 코드 포인트를 인코딩하지 않습니다 encodeURI 또는 유사한을 사용하여

else if (array[i].nodeName=="SELECT"){ 
    if(array[i].id == "multiple"){ 
    var selected = $.map($('#multiple option:selected'), 
          function(e){return $(e).val();}); 
    $.each(selected, function(index, value){ 
      emit(array[i].name, value); 
      }); 
    } else { 
    emit(arr[i].name, arr[i].value); 
    } 
} 

.

0

함수의 이름이 사용되는 방법을 제안한다 다음 조각 쿼리 문자열이 아니라 전체 쿼리 문자열의에 문의하십시오.

편집 — 나는 코드를 기반으로 예제를 만들려고했지만 코드의 의도를 파악할 수 없습니다. 그것이 의미하는 것처럼 구문 오류가있는 것 같습니다.

관련 문제