2010-05-13 5 views
2

큰 그림 질문. 파이썬으로 작성된 전자 상거래 사이트의 장바구니 방법을 모두 실행하는 체리 피 서버가 있습니다. 프런트 엔드에서 jquery로 작업하고 있습니다.cherrypy 서버 측에서 자바 스크립트 클라이언트 측으로 데이터 전달

내 파이썬 메서드에 게시하는 것은 자바 스크립트에서는 쉽지만 데이터를 다른 방법으로 전달하지는 않습니다. JSON으로 다시 보낼 수는 있지만 항상 편리한 것은 아닙니다. 가장 쉬운 방법은 var width = $width과 같은 치타를 사용하여 자바 스크립트 변수를 만드는 것입니다.하지만 그것은 지저분 해 보입니다.

여기서 근본적으로 잘못된 것은 무엇입니까? 내 서버 - 클라이언트 상호 작용을 올바르게 구성하는 것처럼 보이지 않습니다. 내 서버 메소드를 호출하는 가장 좋은 방법은 무엇이며 자바 스크립트로 작업 할 수 있도록 서버의 정보를 페이지에 임베드하는 가장 좋은 방법은 무엇입니까?

답변

0

내가 아는 한 여기에 대해 이야기하는 내용은 내가 아는 두 가지 방법으로 수행 할 수 있습니다.

  1. AJAX 요청은 원하는대로 반환 할 수 있습니다. 당신이 낮은 수준에서 이야기하는 경우 페이지 (뷰) 변경 페이지와 로직
  2. 여러 게시

, 당신은 새로 연결된 클라이언트에 대한 HTTP 요청에서 어떤 정보를 얻을 수 있습니다.

나는 당신이 여기서 무엇을 묻고 있는지 정말로 모르겠습니다. 보다 구체적인 예를 들려 주시겠습니까?

+0

제품을 선택하면 사이트가 사용자 정의 페이지로 리디렉션됩니다. 치타로 해당 페이지를 동적으로 생성하는 것은 쉽지만 해당 페이지의 자바 스크립트는 어떤 제품이 선택되었는지 (또는 필요한 다른 데이터가 무엇인지) 어떻게 알 수 있습니까? 제품을 사용자 정의한 후에는 다음을 수행해야합니다. a) 사용자 정의 페이지에서 "완료된"링크를 클릭하면 cherrypy 서버에 노출 된 addProduct() 메소드에 대해 ajax 호출을 수행합니까? b) addProduct()를 호출 한 다음 장바구니로 리디렉션하는 사용자 정의 페이지의 양식에 노출 된 메소드에 대한 링크? c) 다른 것? – colinmarc

1

내가 줄 수있는 유일한 대답은 또 다른 큰 그림 질문 - 자바 스크립트가 실제로 얼마나 많은 데이터를 필요로하는지 질문하는 것입니다. 사용자가/을 필요로하지 않으므로에서 해당 데이터를 보거나 변경할 수 없기 때문에 일부 내부 데이터는 세션 변수에 저장되어야합니다. 등의 데이터는 세 가지 방법으로 전달 될 수있는 클라이언트 측에서을 필요 :

  1. 쿼리 문자열 매개 변수 또는 URL 조각에서 가져온 서버 측의 템플릿 (당신의 var width = $width 예()에 내장 예를 들어 your-domain.com/products?id=27으로 리디렉션하고 스크립트에서 해당 변수를 찾아서 필요한 작업을 수행하도록하십시오.)
  2. 스크립트에서 서버에 대한 ajax 호출을 만들고 서버에 필요한 데이터를 되돌려 보냅니다.

세 가지 방법 모두 완벽하게 합법입니다. 유일한 질문은 JavaScript가 얼마나 많은 작업을해야하며 클라이언트와 서버 측에서 중복 작업을 수행하고 싶습니까?

1 수있는 가장 쉬운 방법입니다,하지만 당신은 오히려 문제를 해결하기 위해 코드를 리팩토링보다, 코드의 연을 생성하는 서버 측 템플릿 언어를 사용할 수 있기 때문에 (실수 코딩 자바 스크립트 습관을 장려 할 수 있습니다.
2 아마도 빠른이지만, 그것의 복잡성은 더 많은 기능을 추가 할 필요가있을 때 천문학적으로 커집니다. 그리고 당신이 원하는 것을 미리 알지 못한다면 장기적으로 유지하기가 가장 어려워집니다.
3은 최고이지만 가장 힘듭니다 보안 구멍을 만들거나 이중 작업을하지 않고 구현할 수 있습니다.하지만 일단 완료되면 작동중인 API의 절반 이상을 차지할 수 있습니다.