2010-04-12 4 views
9

나는 Symfony 1.2를 사용하고 있습니다. 개체 목록이있는보기가 있습니다. 나는 그것들을 주문할 수 있고, 범주별로 필터링하거나, 다음 페이지로 이동할 수 있습니다 (페이지 매김이 있습니다). 모든 것은 AJAX로 끝났으므로 모든 페이지를 다시로드 할 필요가 없습니다.PHP/Symfony로 URL의 #part를 얻으십시오

달성하려는 목표는 예를 들어 http://urltopage#page=1&order=title&cats=1,2입니다. 새 페이지가 브라우저 기록에 저장되고 다른 페이지에 붙여 넣을 수 있습니다.

#part를 얻는 방법을 찾지 못했습니다. 나는 그것이 브라우저만을위한 것이라는 것을 알고 있지만 나는 PHP를 통과 할 수 없다고 나는 믿을 수 없다. 나는 누락 된 간단한 해결책이 있다는 것을 확신합니다 ...

고마워요!

+0

많은 사람들이 브라우저를 통하는 것 외에는 얻을 수 없다고 말하면 아마 맞을 것입니다. 그리고 당신은 할 수 없습니다. –

답변

15

PHP는 서버로 전송되지 않으므로 PHP를 통해 가져올 수 없습니다.

그러나 JavaScript로 window.location.hash을 통해 가져온 다음 AJAX를 통해 서버로 전송할 수 있습니다.

+0

감사합니다. 다음으로 리디렉션해야한다고 생각합니다. – fesja

2

앵커는 브라우저에서 사용하는 정보이며 표준 HTT GET 요청을 할 때 서버로 전송되지 않습니다. 이것은 당신의 PHP 스크립트는 해당 정보를 얻을 수있는 방법이 없음을 의미

...


... 당신은 어떤 additionnal 매개 변수를 전송, Ajax 요청을 사용하여 같은 일부 자바 스크립트 기반의 마법을 사용하려고하지 않는 한 그 앵커의 가치를 포함하거나 그와 비슷한 것이 겠지요. 그러나 그것은 일을하는 데있어 표준 방법이 아니기 때문에 나는 이것을 권장하지 않습니다 ...

0

window.location.hash is ("해시"/ 앵커는 클라이언트 측에서만, 서버에서는 볼 수 없습니다) 유일한 방법은 쿼리 문자열을 조작하거나 (GET 매개 변수로 변환) 또는 FORM을 사용하여 양식을 작성하는 것을 금지합니다 JS 및 POST 매개 변수로 변환.

AJAX 자바 스크립트 요청 처리기/관리자를 작성하는 기본 사항입니다. 하지만 결국에는 GET/POST "정상"URL을 작성하여 요청을 보내야합니다.

해시에도 쿠키를 저장할 수 있지만 라우팅이나 데이터 전달을 처리하는 방법으로 사용하지 않습니다.