2017-02-13 5 views
0

필자는 필자의 견해로 프로젝트 목록을 가지고 있으며 각각에 대해 개별 페이지를 동적으로 생성하려고합니다. 내보기 :Web2py AJAX 값

{{for i in project_list:}} 
<ul> 
    <input id="hello" type="hidden" value="{{response.write(i)}}" name="project_Name"> 
    <li><a onclick="ajax('{{=URL('default', 'view_project')}}', ['project_Name'], 'target');">View Project</a></li> 
</ul> 
{{pass}} 

내 컨트롤러 :

def view_project(): 
    print request.vars.project_Name 
    return dict(name=request.vars.project_Name) 

기본적으로, 나는 그것의 project_Name하여 각 프로젝트를 확인하고 싶습니다.

이 컨트롤러에서 현재 출력 :

['Customizable logistical service-desk ', 'Extended contextually-based prod 
uctivity ', 'Face-to-face modular circuit ', 'Multi-tiered stable intranet 
', 'Quality-focused coherent budgetary management '] 

이 왜 출력으로 모든 프로젝트 이름의 배열을받는 건가요? 난 단지 프로젝트를 식별하고 싶습니다.

아무쪼록 감사드립니다.

+0

그것을하지저기서 좀 더 깨끗한 솔루션을 사용 당신이 찾고있는 행동에 대해 더 명쾌하게 표현할 수 있습니까? – Cesar

+0

안녕하세요! AJAX를 사용하여 개별 값을 전달하려고 시도하지만 대신 배열을 전달합니다. 그래서 '[Customizable logistical service-desk', '문맥 기반 확장 문맥', '대면 모듈 식 회선', 'Multi-tiered stable intranet ', '품질 중심의 일관된 예산 관리' ]'나는 단지 :'맞춤형 물류 서비스 데스크 ' – Arjun

답변

1

web2py 아약스 기능 ("프로젝트 이름"기능 두 번째 매개 변수에 전달 된 이름 속성으로 서버에 html 요소의 값을 전송 귀하의 경우), 같은 이름의 필드가 두 개 이상있는 경우 모든 필드의 값을 보냅니다.

그래서 같은 이름의 루프가 많은 필드를 만들고 ajax 함수가 모든 값을 서버에 보냅니다.

당신은 각 필드 이름에 카운트 변수를 추가하는 문제 (와 그의 온 클릭 속성에 이름) 해결할 수 :

{{count = 1}} 
{{for i in project_list:}} 
<ul> 
    <input id="hello" type="hidden" value="{{response.write(i)}}" name="project_Name{{=count}}"> 
    <li><a onclick="ajax('{{=URL('default', 'view_project')}}', ['project_Name{{=count}}'], 'target');">View Project</a></li> 
</ul> 
{{count += 1}} 
{{pass}} 

을 또는 JQuery와 아약스 기능

1

당신은이 :

ajax('{{=URL('default', 'view_project')}}', ['project_Name'], 'target') 

당신은 게시 할 값을 추출 할 양식 입력 요소로 "프로젝트 이름"을 지정했습니다. 그러나 페이지에 동일한 이름의 입력이 여러 개 있습니다. 결과적으로, Ajax 함수는 모든 값을 단일 목록으로 직렬화하고 전체 목록을 게시합니다.

각 입력에 고유 한 이름을 지정할 수 있지만 더 간단한 해결책이 있습니다. 숨겨진 input 요소를 사용하여 Ajax 함수가 전송할 값을 보유하고있는 것 같습니다. 그 대신에 Ajax URL에 직접 값을 인코딩 할 수 있습니다. 그래서, input 요소의 제거 얻을에 ajax 호출을 변경 :

ajax('{{=URL('default', 'view_project', vars=dict(project_name=i)}}', [], 'target')