2013-09-03 2 views
4

jQuery의 post 메소드를 사용하여 브라우저에서 장고 서버로 사용자가 현재 위치 변수를 보내려고합니다. 현재 위치는 변수 pos에 저장됩니다.변수를 javascript에서 서버 (django)로 전달합니다.

$(document).ready(function(){ 
    $.post("/location", pos) 
}); 

은 장고, 나는 내가 carryout 거리 조회에 사용 request.POST(pos) 통해 views.py에서 POS 변수를 캡처 urls.py에있는 URL /location을 만들었습니다.

변수가 장고 서버로 전달되지 않는 것을 볼 수 있습니다. 누군가 내가 잘못 가고 있다고 조언 할 수 있습니까?

나는 아래의 코드를 아래

document.getElementById('location').value = pos 

를 사용하여 HTML 양식의 입력 요소 (ID = "위치")에 구글의 위치 정보 API에서 자바 스크립트 위치 변수 (POS) 할당

+5

'$ .post ("/ location", {position : pos}); 대신 사용해보십시오. 'request.POST [ 'position']'을 사용하여 서버 측에서 액세스하십시오 (필자 생각). – Joe

+0

@Joe가 제안을 시도했지만 작동하지 않는 것 같습니다. – kurrodu

+1

@Joe 사용자가 허용 (현재 위치 보내기)을 클릭하기 전에'(document) .ready (function()'이 실행되기 때문일 수 있습니까? – kurrodu

답변

6

내 HTML 양식

입니다 내 구글의 위치 정보 API 내에서 다음
<form id = "geolocation" action="/location" method="POST" > 
      {% csrf_token %} 
     <input type="text" id = "location" name="location" value="" /> 
     <input type="submit" /> 

</form> 

, 나는 자동 코드의 다음 줄을 추가하여 양식을 제출

document.getElementById("geolocation").submit(); 
마지막으로 장고 Views.py 파일 내

, 나는 내가 여기에 변수

user_location = request.POST.get('location') 

구글 위치 정보 API에 a link 인을 사용하고있는 함수 내에서 클라이언트 측에서 위치를 얻기 위해 'POST'방법을 사용합니다.

코드에서 발췌 한 코드를 삽입했습니다. Google Geolocation API에서 위의 JavaScript 코드 행을 정확히 사용했는지 알 수 있습니다.

var infowindow = new google.maps.InfoWindow({ 
    map: map, 
    position: pos, 
    content: 'Location found using HTML5.' 
    }); 
    // the below line has been inserted to assign a JS variable to HTML input field called 'geolocation' 
document.getElementById('location').value = pos 
map.setCenter(pos); 
// the below line has been inserted to autosubmit the form. 
document.getElementById("geolocation").submit(); 
관련 문제