2012-09-18 8 views
0

그래서 거대한 개체를 만들었습니다. 데이터베이스 테이블을 통해 적절한 열 이름으로 모든 행을 수집합니다 (sx는 자바 스크립트로 출력되는 문자열 임) :자바 스크립트 개체 배열을 배열로 변환

(위 코드는 C# 코드이지만 오류는 javascript 부분입니다.)

내 목표는

http://jqueryui.com/demos/autocomplete/

htmltable += sx + "$('#mySearchBox').autocomplete({" + 
       "source: jQuery.makeArray(SearchAutocomplete['" + columnName + "'])" + 
       "});" 

내가 jQuery.makeArray를 사용하여 시도 ... 열 이름을 기반으로 자동 완성() JQuery와 UI의 기능, 내부에 넣어이 거대한 객체를 사용하는 것입니다 ,하지만 내가 무엇을 시도해도 SearchAutocomplete [ 'columnName']을 값 배열로 인식하지 못합니다.

자동 완성 기능이 작동하지 않습니다.

나는 어쨌든 루프를 통해 객체를 배열로 다시 변환하는 것이 해결책이라고 생각합니다. 그러나 쉬운 방법이 있습니까? # 1를 해결하기 위해

시도 :

if(list_fields.ContainsKey(s.Key)){ 
    if (i == 0) 
    { 
     sx += "SearchAutocomplete['"+ s.Key + "'] = [];"; 
    } 
    sx += "SearchAutocomplete['" + s.Key + "'].push('" + s.Value + "');"; 
} 
+0

어쩌면 내가 누락되었지만 sx는 JavaScript의 문자열입니다. 맞습니까? 문자열을 JavaScript 배열 객체로 분할 할 필요가 없습니까? 일치 시키려면 .split와 좀 더 복잡한 정규 표현식을 함께 사용해야 할 것입니다. – Mark

+0

@Mark :'sx'는 문자열입니다. 그러나 이것은 덱스터가 응답에 덤프 할 JS의 동적 생성 덩어리의 일부일뿐입니다. 브라우저에 올바르게 표시되어야합니다. –

+0

배열은 내가 믿는 Array 문자처럼 보일 것입니다. '[{s.Key : s.Value}, {...}]'이며 배열 키 값 지정 문자열은 아닙니다. – Mark

답변

1

어쩌면 이러한 변화를 시도 :

//Outside your loop: 
sx += "SearchAutocomplete['" + s.Key + "'] = [];"; 
//... Inside your loop: 
sx += "SearchAutocomplete['" + s.Key + "'].push('" + s.Value + "');"; 

그런 식으로, SearchAutocomplete[columnName] 시작하는 기본 배열입니다.

+0

이봐, 나는 {{}이 (가) 있기 전에 그것을 시도했다. 이것은 하나의 대상입니다. 하지만 여전히 자동 완성 기능이 작동하지 않습니다. 또한 자바 스크립트 오류가 없습니다. 위의 "# 1 수정 시도"를 참조하십시오. – Dexter

+0

jQuery.MakeArray()도 제거했습니다. – Dexter

+0

어떻게 든 간단한 예제를 만들었지 만, 여기서는 작동하지 않고 작동합니다. http://jsbin.com/aligik/1 <--- 자바 스크립트를 테스트하고 편집하십시오. 나는 너무 혼란 스럽다, 어떻게 거기에서 일하지만 내 것은 아닌가? jqueryui_min 대신 jqueryui_autocomplete_min이 있기 때문입니까? – Dexter

관련 문제