cakephp:访问ctp中设置的隐藏字段值,在没有表单的控制器中

时间:2013-02-19 05:31:59

标签: javascript session cakephp

我正在使用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

    }

我该怎么做?

1 个答案:

答案 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.