我使用yii框架來創建地圖應用程序。在這個應用程序中,我使用GeoExt和Openlayers.In此應用程序用戶可以繪製多邊形並保存這個實現這個後用戶繪製多邊形並點擊它( OpenLayers功能)我發送多邊形與ajax保存在數據庫,但我不能從控制器操作在yii框架中獲取任何ajax數據。請參閱下面的代碼!用ajax發送數據到控制器動作
var selectOptions = {
clickout: true,
onSelect: save
};
select = new OpenLayers.Control.SelectFeature(vectors, selectOptions);
map.addControl(select);
var saveButton = new Ext.Button({
text: 'Save',
enableToggle: true,
toggleGroup: toggleGroup,
handler: function(toggled)
{
if(toggled){
polygon.deactivate();
modify.deactivate();
select.activate();
}
}
function save(feature) {
var geojson_format = new OpenLayers.Format.GeoJSON();
var str = geojson_format.write(feature, true);
Ext.MessageBox.prompt('Name', 'Please enter district name:', "Ok");
<?php
echo CHtml::ajax(array(
'url'=>array('site/test'),
'data'=>array('polygon'=>'data'),
'type'=>'POST',
'success'=>"function(){
alert('ok');
}"
));
?>
$("#output").val(str);
}
在保存功能
我用警予的cHTML ::阿賈克斯送多邊形的Yii站點控制器測試動作在這個PHP代碼我送多邊形「數據」進行測試,但在真正的我想給海峽變量是多邊形geojson對象到控制器action.At函數的結尾我使用$(「#output」)。val(str);測試geojson str var我看到輸出textarea的輸出,但我不知道爲什麼數據不會發送到控制器操作! 控制器動作代碼
class SiteController extends Controller
{
public $polygon;
public function actionTest()
{
if(isset($_POST['polygon']))
$this->polygon=$_POST['polygon'];
$this->render("test", array('polygon'=>$this->polygon));
}
測試功能我創建的地圖多邊形,然後點擊保存按鈕後,該按鈕是切換我點擊創建多邊形我看到在輸出textarea的多邊形GeoJSON的對象,但是當我想在http://localhost/FleetManagement/index.php/site/test
的瀏覽器中看到多邊形對象,我只看到空! 測試視圖代碼:
<?php
var_dump($polygon);
?>
下面是保存功能在Chrome開發者工具!
function save(feature) {
var geojson_format = new OpenLayers.Format.GeoJSON();
var str = geojson_format.write(feature, true);
Ext.MessageBox.prompt('Name', 'Please enter district name:', "Ok");
jQuery.ajax({'url':'/FleetManagement/index.php/site/test','data':{'polygon':'data'},'type':'POST','cache':false}); $("#output").val(str);
}
當我調試我看到JQuery.ajax行執行,但我不知道這行可以發送數據或不!因爲當我看到測試視圖時,我只能看到Null! 在上面的代碼中,我可以看到成功警報,但我無法在測試視圖中看到站點控制器多邊形,$ polygon是空的!
var_dump($ _ POST)在actionTest()中顯示的是什麼? Chrome開發人員工具顯示的提交內容是什麼? – ernie 2012-07-31 23:06:59