쿼리 문자열 (예 : ?name=value1&type=value2&name=value3&type=value4...
이지만이 코드는 전달 된 모든 쿼리 문자열을 처리 할 수 있어야 함)을 가져와 객체를 생성해야합니다.QueryString 배열을 처리 할 수있는 자바 스크립트 컬렉션 객체
나는이 작업을 거의 완료했습니다. 그러나 내 논리는 마지막 for 루프 내부에서 조금 떨어져 있습니다. 누군가 내가 잘못 간 곳을 지적 할 수 있다면 정말 고맙겠습니다!
먼저 내가 jQuery의 $.get
기능을 사용하여 쿼리 문자열을 잡아 :
$.get("xmlreader.php", function(data) {
var queryParams = [];
var qString = data;
// test qString for & at the end
var last = qString.lastIndexOf("&");
if(last == qString.length - 1) {
// then there is a & to remove
qString = qString.substring(0,qString.length-1);
}
getParamObj(qString);
});
(나는 그것이 내 자바 스크립트 여기에 마지막 &을 제거하는 것이 펑키 알고하지만 난 전혀 여기에 집중하고 싶지 않아 .) 그럼 실제 컬렉션 개체 구축 getParamObject(qString);
전화
:
function getParamObj(parameterString) {
var qString = parameterString;
var parameters = qString.split("&");
parameters[0] = parameters[0].substring(1);
var paramObject = new Object();
for(var index = 0; index < parameters.length; ++index) {
var equalsPos = parameters[index].indexOf("=");
var key = parameters[index].substring(0,equalsPos);
var stringLength = parameters[index].length;
var value = parameters[index].substring(equalsPos + 1, stringLength);
if(!paramObject[key]) {
console.log("paramObject[key] = " + paramObject[key]);
paramObject[key] = value;
if(paramObject[key] instanceof Array) {
console.log("instance of array");
paramObject[key].push(value);
} else {
var newArray = [];
var existingValue = paramObject[key];
console.log("existing value: " + existingValue);
console.log("value: " + value);
newArray.push(existingValue);
newArray.push(value);
paramObject[key] = newArray;
}
}
}
(SECURITY) 기능을 비활성화를 이온은 올바르게 작용하고 있습니다. 테스트 할 때 몇 가지 잘못된 점이 있습니다 : 마지막 조건부 값 및 값이 동일합니다. 다른 문제도있을 수 있지만 기본 문제라고 생각합니다.
정규 표현식을 사용하는 접근법을 보았지만 여기서 그 경로를 사용하고 싶지 않습니다.
참고 : 나는 스택은 당신 말을하지만 난 그냥 58 담당자 :
[code]
if(!paramObject[key]) {
console.log("paramObject[key] = " + paramObject[key]);
paramObject[key] = value;
console.log("paramObject[key] = value = " + value + paramObject[key]);
console.log(paramObject[key]);
}
else if(paramObject[key] instanceof Array) {
paramObject[key].push(value);
console.log("value if arra" + value);
} else {
var newArray = [];
var existingValue = paramObject[key];
console.log("existing value: " + existingValue);
console.log("value: " + value);
newArray.push(existingValue);
newArray.push(value);
paramObject[key] = newArray;
}
[/code]
글쎄,'paramObject [key] = value;와'var existingValue = paramObject [key];'당신은 기본적으로'var existingValue = value'를하고 있습니까? – pimvdb
나는 내 자신의 문제를 해결했다. LOL ... –
고마워 - 미안하지만, '나는 그것을 풀었다'고 말하지 않았다 ... 스택은 내가 대답을 게시하도록하지 않았다. 내 질문에 메모로 추가했습니다. –