한 HTML 페이지에서 다른 페이지로 변수를 전달하기위한 모범 사례는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/216536

  •  03-07-2019
  •  | 
  •  

문제

저는 웹 애플리케이션 프로그래밍에 비교적 새로운 것이므로이 질문이 모든 사람에게 너무 기본적이지 않기를 바랍니다.

나는 다른 식료품 점에 대한 설명 행으로 채워진 dojox datagrid (v1.2)가 포함 된 양식으로 HTML 페이지를 만들었습니다. 사용자가 관심있는 항목을 선택하면 "제출"버튼을 클릭합니다.

이 시점에서 JavaScript 함수를 가져 오기 위해 항목 ID 번호를 JavaScript 변수로 저장할 수 있지만이 ID를 후속 HTML 페이지에 전달하는 방법을 모르겠습니다.

ID를 URL 쿼리 문자열 매개 변수로 전달해야합니까? 다른 더 나은 방법이 있습니까?

편집 : 전체 프로세스는 쇼핑 카트와 같습니다. 사용자는 그리드에서 항목을 선택한 다음 다음 페이지에서 사용자가 몇 가지 세부 정보를 작성한 다음 체크 아웃합니다.

또한 성배를 사용하고 있다고 언급해야하므로 GSP 페이지에서 발생하지만 현재 HTML 만 포함되어 있습니다.

도움이 되었습니까?

해결책

숨겨진 입력 필드 만 사용할 수 있습니다. 양식의 일부로 전송됩니다.

<html>
  <head>
  </head>
  <body>
    <script type="text/javascript">
      function updateSelectedItemId() {
        document.myForm.selectedItemId.value = 2;
        alert(document.myForm.selectedItemId.value);

       // For you this would place the selected item id in the hidden
       // field in stead of 2, and submit the form in stead of alert
      }
    </script>

    Your grid comes here; it need not be in the form

    <form name="myForm">
      <input type="hidden" name="selectedItemId" value="XXX">
      The submit button must be in the form.
      <input type="button" value="changeSelectedItem" onClick="updateSelectedItemId()">
    </form>
  </body>
</html>

다른 팁

좋은 것은 좋지만 더 나은 것은 JSP, PHP, ASP와 같은 일부 스크립트 언어를 사용하는 것입니다. 간단한 게시물을 사용하고 메소드를 얻을 수 있습니다.

가장 좋은 방법 (IMHO)은 URL에 포함시키는 것입니다.

href = "http : //newpage.htm? var = value";

encodeUricomponent 문자열 값

다른 페이지로 게시물을 사용하여 변수를 전송하는 한 가지 방법은 다음 페이지에 대한 링크를 다음 페이지에 대한 링크를 대상 페이지 인 양식의 입력을 제출하는 것입니다. 보유한 모든 변수에 대해이 양식의 속성 유형 "Hidden"입력을 사용하여 버튼 만 표시 할 수 있습니다.

또 다른 옵션은 기본적으로 현재 get 쿼리를 다시 채우는 PHP와 같은 페이지에서 링크를 동적으로 생성하는 것입니다.

마지막으로,이 정보를 항상 PHP $ _session 배열에 저장할 수 있으며 사이트 탐색을 통해 이러한 변수를 지속적으로 전달하는 것에 대해 걱정할 필요가 없습니다.

귀하의 선택은 동일한 변수를 유지하려는 곳에 몇 개의 탐색 옵션이 있는지에 따라 다릅니다. 또한 백엔드가 얼마나 안전하고 싶은지와 고급 웹 사용자에게 공개하려는 금액에 따라 다릅니다.

후속 페이지에서 ID 만 필요하면 ID를 쿼리 문자열 매개 변수로 전달할 수 있습니다.

그러나 더 많은 정보를 전달하고 다양한 매개 변수를 다른 페이지에 전달하고 다른 페이지에 대해 다른 매개 변수 세트를 유지 해야하는 경우가 있습니다. 이 경우에 숨겨진 필드를 양식에 보관하고 각 매개 변수를 저장하는 인수 객체를 작성하는 것이 좋습니다. 인수 객체를 JSON으로 직렬화하고이를 숨겨진 필드에 보관하십시오. 양식을 서버에 다시 게시하십시오. 다음 페이지가로드되면 객체를 실질화하고 필요한 값을 검색하십시오.

HTML 페이지를 사용하는 것으로 제한되어 있다고 가정하면 가장 좋은 방법은 쿼리 문자열의 ID를 다음 페이지로 전달하는 것입니다. 다음 페이지에서 해당 값을 쿼리 문자열에서 다시 가져 오는 것은 비교적 쉽습니다. 변수를 전달하는 것에 대해 조금 더 은밀 해야하는 경우 (또는 둘 이상의 페이지에 대한 변수가 필요한 경우) 쿠키를 설정하고 다음 페이지에서 검색 할 수도 있습니다.

Grails 응용 프로그램 에서이 작업을 수행하려고하므로 Flash Scope를 사용하는 선택이 있습니다. 범위가 컨트롤러에 정의되므로 하나의 HTML 페이지에서 다음 페이지로 직접 이동하려는 경우에는 의미가 없습니다. 요청간에 어떤 종류의 처리도 할 필요가 없다면, 숨겨진 양식 필드를 사용하여 간단하게 유지하는 것이 좋습니다.

http://grails.org/controllers+-+-controller+Scopes

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top