我正在使用cakephp和javascript。以下是场景: 在地图图标上单击,调用jquery finction显示谷歌地图。现在通过javascript,用户可以拖动n更改谷歌地图中的当前标记位置。值也在视图中设置。但是如何在控制器中访问这些值(纬度,经度)? 我希望在会话变量中设置纬度和经度但我不能这样做我的意思是javascript中的icant set session变量n在控制器中使用它。 以下是我的代码:
function initialize() {
var latLng = new google.maps.LatLng(lat,long);
var map = new google.maps.Map(document.getElementById('mapCanvas'), {
zoom:8,
center: latLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
position: latLng,
title: 'Point A',
map: map,
draggable: true
});
// Update current position info.
//alert(" initilize");
updateMarkerPosition(latLng);
geocodePosition(latLng);
// Add dragging event listeners.
google.maps.event.addListener(marker, 'dragstart', function() {
//updateMarkerAddress('Dragging...');
// alert("dragStart"+marker.getPosition()); // access this value in controller
});
google.maps.event.addListener(marker, 'drag', function() {
// updateMarkerStatus('Dragging...');
updateMarkerPosition(marker.getPosition());
alert(marker.getPosition()); // access this value in controller
});
google.maps.event.addListener(marker, 'dragend', function() {
// updateMarkerStatus('Drag ended');
geocodePosition(marker.getPosition());
alert(marker.getPosition()); // access this value in controller
});
}
控制器中的:
public function map()
{
//access lat, long here
}
我该怎么做?
答案 0 :(得分:0)
使用AJAX技术可以将JavaScript与PHP连接。
像这样,你的JavaScript代码将在控制器中调用一个具体的动作,一旦在那里,你可以将它保存在会话中或做任何你想做的事情。
您可以每隔X秒或任何更改调用操作,具体取决于您何时调用它以及您可以从用户捕获的可能事件。
这是我的意思的一个例子:
$(document).ready(function(){
//calling the function every 30 seconds
setInterval(function(){
getUserSavings();
}, 30*1000);
});
function getUserSavings(){
$.post("http://"+ document.domain + "/users/getSavings.json",
function(dat){
//do whatever you want with the resulting data (dat)
$('#totalSavings span').html(dat['result']['savings']);
});
}
不需要使用扩展名json
,但它使您无需定义视图即可调用操作。有关详细信息,请查看the documentation.