@sahmad가 제안 했으므로, AJAX가가는 길 같습니다. 앞에서 말한 것처럼 브라우저 플러그인으로 문제를 해결하기 시작했습니다. 나는 이것을 위해 파이어 브레스를 사용했다. 길을 따라 몇 가지 어려운 교훈을 배웠습니다. 가장 중요한 점은 플러그인을 변경했을 때 플러그인을 크래시하고 페이지를 다시로드하거나 브라우저를 다시 시작해야한다는 것입니다. 나는이 단순한 사실에 대해 무지한 많은 시간을 낭비했다. 이 플러그인의 방향은 내 C++ 기술이 개발 초기 단계이기 때문에 더 오랜 시간이 걸렸습니다.
AJAX 경로는 매우 간단합니다. 이 페이지를 시작점으로 사용했습니다. http://www.degraeve.com/reference/simple-ajax-example.php
내 사례를 완료하고 내 솔루션을 다시보고하면이 문제가 모두 완료 될 것이라고 생각했습니다. 그러나 예를 만드는 과정에서 나는 또 다른 질문을 생각해 냈습니다. 다음 파일은 다음과 같습니다
나는 html 파일과 같이 수정 :
<html>
<head>
<title>Simple Ajax Example</title>
<script language="Javascript">
function xmlhttpPost(strURL) {
var xmlHttpReq = false;
var self = this;
// Mozilla/Safari
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function() {
if (self.xmlHttpReq.readyState == 4) {
updatepage(self.xmlHttpReq.responseText);
}
}
self.xmlHttpReq.send(getquerystring());
}
function getquerystring() {
qstr = 'latLon=' + escape(document.forms['f1'].lat.value + ':' + document.forms['f1'].lon.value);
return qstr;
}
function updatepage(str){
document.getElementById("result").innerHTML = str;
}
function moveMarker(){
document.getElementById("timer").innerHTML= parseFloat(document.getElementById("timer").innerHTML) + 1
xmlhttpPost("/cgi-bin/ajax3.py")
var latFromGPS = document.forms["f1"]["gpsLat"].value;
var lonFromGPS = document.forms["f1"]["gpsLon"].value;
document.forms["f1"]["lat"].value=latFromGPS;
document.forms["f1"]["lon"].value=lonFromGPS;
}
window.setInterval('moveMarker()', 2000);
</script>
</head>
<body>
<form name="f1">
<p id=timer>0</p>
<p><input type="text" id="lat" name="lat" value="35.0"> </p>
<!-- <input type="hidden" name="gpsLat" value="35.0"> -->
<p><input type="text" id="lon" name="lon" value="-106.0"> </p>
<div id="result"></div>
</form>
</body>
</html>
여기 (이 예제는 CGI-bin에 ajax3.py로 저장한다) 내 파이썬 CGI 스크립트입니다 :
#! /usr/bin/python
import cgi
import cgitb; cgitb.enable() # for troubleshooting
print "Content-type: text/html"
print ""
# Create instance of FieldStorage
form = cgi.FieldStorage()
gpsLat = float(form.getvalue("latLon").split(":")[0])
gpsLon = float(form.getvalue("latLon").split(":")[1])
print '<input type="hidden" name="gpsLat" value="%s">' % (gpsLat + 0.001)
print '<input type="hidden" name="gpsLon" value="%s">' % (gpsLon + 0.001)
GPS보고 좌표를 CGI 스크립트의 경도 & 위도 모두에 천분의 일을 단순히 추가하여 시뮬레이트하려고했습니다. 그런 다음이 결과를 숨겨진 입력 유형을 통해 원래 페이지로 다시 보냅니다. 흥미로운 점은 moveMarker()를 좌표의 두 배로 호출해야한다는 것이 었습니다. 이것은 문제가 아니지만 이것이 왜인지 이해하고 싶습니다.내 순진 관점에서, 나는
xmlhttpPost("/cgi-bin/ajax3.py")
명령
var latFromGPS = document.forms["f1"]["gpsLat"].value;
이 실행 된 후 다음 명령을하기 전에 실행 및 완료 것이라고 생각. 그러나 이것은 그렇지 않습니다. 첫 번째 명령은 일정 시간이 지나면 완료되거나 moveMarker()가 완료 될 때까지 완료되지 않습니까?
답변 해 주셔서 감사합니다. 어젯밤에 아약스가 어떻게 작동하는지에 대한 설명을 들었습니다. 당신의 생각을 뒷받침하는 것은 저를 들여다 볼 수있는 충분한 동기입니다. 지난 밤부터 나는 플러그인을 만드는 방법에 익숙해 지려고 노력해 왔습니다. 나는 두 가지 방법 모두 효과가있을 것이라고 생각합니다. – nomadicME