아니. 데이터 전송에 # 사용을 중지하십시오. jQM이 그 일을하도록합시다. 그것을 방해하지 마십시오. 쿼리 문자열을 사용하십시오 (URL에?를 추가하십시오). 내 조언은 쿼리 문자열 (? 태그)과 # 태그를 사용하여 데이터를 다음 페이지으로 보내지 않는 것입니다. localStorage
을 사용하여 처리하십시오. 사용자가 URL 변경을 보지 못하기 때문에 쿼리 문자열과 비교하여 보안이 강화되어 최소한 중요한 데이터는 숨겨져 있습니다. localStorage
은 도메인 당 임시 저장 세트와 같은 HTML5의 API입니다. 이 데이터는 캐시에서 데이터가 지워질 때까지 유지됩니다.
<a href="doWork.html" data-role="button">Go to Do work</a>
과 같이 태그 자체에 장치 ID에 대한 속성을 추가, 당신은 dowork.html 간다 앵커 태그가 가정 :
<a href="doWork.html" data-deviceid="10" data-role="button">Go to Do work</a>
당신은 동적으로이 일을 할 거라고는 수도 또한 같은 방식으로 사용하십시오. 너는 바로 그 요점을 얻는다?
$(document).on("click", "a", function(e) //use a class or ID for this instead of just "a"
//prevent default
e.preventDefault();
//get device id from tag attribute
var deviceId = $(this).data("deviceid");
//set it in localStorage
localStorage["dId"] = deviceId;
//redirect
$.mobile.changePage(this.href);
});
그런 다음, 다른 페이지의 pageinit
(또는 이벤트)에 저장에서 장치 ID를 얻고 서버에 Ajax 호출을 보내
이에 대한 클릭 이벤트는 다음과 같이 보일 것이다.
//assuming #dowork is the id of a div with data-role="page"
$(document).on("pageinit", "#dowork", function() {
//get from storage
var deviceId = localStorage["dId"];
//make ajax call or server call with deviceId here
});
그러나 URL을 여전히 사용하려면 look at this question입니다. 나는저기서 괜찮은 대답을했다.
그래서 정확히 내가 무엇을하고 있는지 정확히 추천하려면 # 기호를 변경하고 싶습니다. 작동할까요? 명령은 동일합니까? window.location.hash.substring (1)? –
아니요,이 명령은이 location.search.substring (1)로 변경해야합니다. – user1549458