2013-08-05 2 views
1

URL을 사용하여 내 서버에 정보를 전달하는 인앱 브라우저를 여는 모바일 애플리케이션이 deviceID와 같습니다. 브라우저가 웹 페이지를 열 것입니다 예를 들어 jQuery Mobile을 사용할 때 URL을 통해 정보를 전달할 수 있습니까?

( JQuery와 모바일) :

var userId = window.location.hash.substring(1); 
다음 doWork.html 파일 내부에 자바 스크립트를 사용하여 서버 부분에 www.myserver.com/doWork.html#deviceID

, 나는 이런 식으로의 DeviceID를 얻을 수

hash #을 사용하여 정보를 전달해도 괜찮습니까? jquery mobile에서는 누군가가 Multi-Page template structure을 사용할 때 해쉬 (hash) #를 사용하여 페이지를 변경합니다. 그래서 나는 물음표 (?)과 같은 뭔가 다른 것을 사용해야 할까 두렵다.

또는 완벽하게 괜찮습니까?

답변

1

아니. 데이터 전송에 # 사용을 중지하십시오. 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입니다. 나는저기서 괜찮은 대답을했다.

1

변수를 서버에 전달하려면 # 기호를 사용하지 마십시오.이 기호를 사용하는 프레임 워크에 관계없이 다른 목적으로 사용되므로 GET 요청의 정보를 서버에 전달하려면? 기호를 사용해야합니다. 기호, 이런 식으로해야합니다 : www.myserver.com/doWork.html?deviceID=1233455

+0

그래서 정확히 내가 무엇을하고 있는지 정확히 추천하려면 # 기호를 변경하고 싶습니다. 작동할까요? 명령은 동일합니까? window.location.hash.substring (1)? –

+0

아니요,이 명령은이 location.search.substring (1)로 변경해야합니다. – user1549458

관련 문제