2012-12-19 2 views
2

GET ajax 호출을 통해 PHP 스크립트에 몇 가지 16 진수 색상을 전달하려고합니다. PHP는 16 진수 색상을 좋아하지 않는 것 같아요, 나는 #을 대체하고 어떤 작업이든 encodeURIComponent을 사용하려고 시도했습니다.GET ajax 호출에서 HEX 색상 전달

다음은이 작업을 수행 할 수있는 (각 currentColors 항목이 진수 색상 인 포함) JS

var dataString = 'designName=test&mc1='+currentColors[1]+'&mc0='+currentColors[0]+'&sp='+currentColors[2]; 
var strippedString = encodeURIComponent(dataString); 
+1

왜 아닙니다 # 색상에서? –

+0

그냥 #을 생략하지 않는 이유는 무엇입니까? 당신은 정말로 그것을 필요로하지 않습니다. – kennypu

+0

어떤 오류가 발생합니까? 왜'# '없이 색상 값을 보내서 서버 측에 다시 추가할까요? –

답변

4

사용 encodeURIComponent은 URI를 인코딩 (I 제안처럼 이는 배열 함수보다 의심의 여지가 빠른 없음) 구성 요소 :

var strippedString = 
    "designName=test" + 
    "&mc1=" + encodeURIComponent(currentColors[1]) + 
    "&mc0=" + encodeURIComponent(currentColors[0]) + 
    "&sp=" + encodeURIComponent(currentColors[2]); 

예 : 서버 측 쿼리 문자열에

var strippedString = 
    "designName=test" + 
    "&mc1=" + encodeURIComponent("#FF0000") + 
    "&mc0=" + encodeURIComponent("#00FF00") + 
    "&sp=" + encodeURIComponent("#0000FF"); 
// "designName=test&mc1=%23FF0000&mc0=%2300FF00&sp=%230000FF" 

산출 할 것이다 :

// parse_str("designName=test&mc1=%23FF0000&mc0=%2300FF00&sp=%230000FF", $my_GET); 
// var_dump($my_GET); 

array(4) { 
    ["designName"]=> 
    string(4) "test" 
    ["mc1"]=> 
    string(7) "#FF0000" 
    ["mc0"]=> 
    string(7) "#00FF00" 
    ["sp"]=> 
    string(7) "#0000FF" 
} 
+0

건배, 멋지고 깔끔합니다. –

0

입니다 :

var strippedString = dataString.split('#').join(''); 

그런 다음, 서버 측, 앞에 추가 매개 변수에 '#' 다시./당신은 또한 자리를 사용할 수 있습니다

var s = a.join(''); 
console.log(s); 
//'designName=test&mc1=FF0000&mc0=FFFFFF&sp=FF00FF' 

:

var s = 'designName=test&mc1=#FF0000&mc0=#FFFFFF&sp=#FF00FF'; 
var a = s.split('#'); 
console.log(a); 
//["designName=test&mc1=", "FF0000&mc0=", "FFFFFF&sp=", "FF00FF"] 

.join('') 다음 함께 다시 배열을 결합 :


.split('#')

'#' 문자에서, 배열로 최대 문자열을 분할 .join('')의 교체 문자열 :

answered 같은 691,363,210
var s = a.join('%'); 
console.log(s); 
//'designName=test&mc1=%FF0000&mc0=%FFFFFF&sp=%FF00FF' 

또는 만 구성 요소에 대한 encodeURIComponent를 사용합니다.