我試圖將我的jquery-ui對話框的用戶位置+大小存儲到mysql數據庫中。我試着在這裏閱讀手冊:https://api.jqueryui.com/1.10/dialog/,並沒有如何做到這一點的文件。我的代碼下面的問題是$ data = json_decode($ _ POST [「data」]);在savelayout.php中返回NULL。jquery-ui對話框(通過php保存位置) - 只適用於.draggable不.dialog
編輯:我能得到的座標通過PHP後存儲到MySQL這樣,但他們總是相同的大小3.078125
和38.453125
。 alert(JSON.stringify(order));
總是輸出相同的座標爲好,儘管使用var coord = $(this).position();
編輯:使用.draggable作品,但不.dialog
編輯:增加了更多的斷碼。隨你。 實例對話(可拖動+可調整大小):
<script>
$(document).ready(function() {
$("#menu").dialog({
bgiframe: true,
position: {my: 'left <?php echo $menumy; ?>', at: 'left <?php echo $menuat; ?>', of: window},
modal: false,
height: <?php echo $menuheight; ?>,
width: <?php echo $menuwidth; ?>,
dialogClass: 'fixed-dialog',
dragStop: function(e, ui) { saveCoords(ui.offset.top, ui.offset.left); },
resize: function(event, ui) {
$(this).dialog("option",
ui.size.height + " x " + ui.size.width);
$.post("savelayout.php", { menuheight: ui.size.height, menuwidth: ui.size.width });
}
}).mousemove(function(){
var coord = $(this).position();
$("p:last").text("left: " + coord.left + ", top: " + coord.top);
}).mouseup(function(){
var coords=[];
var coord = $(this).position();
var item={ coordTop: coord.left, coordLeft: coord.top };
coords.push(item);
var order = { coords: coords };
});
});
function saveCoords(top, left) {
$.post(
"savelayout.php",
JSON.stringify({
coordtop: Math.round(top),
coordleft: Math.round(left)
})
);
}
</script>
什麼事件會觸發保存對話框的位置和大小?開幕後?拖動?關?一旦你選擇了觸發器,你就可以在那時執行代碼來保存你想要的細節。 – Twisty
觸發器通過setTimeout \ setInterval或每個Drag + Resize調整時間會更符合邏輯。我關心CPU使用情況。 – michelle
如果這是問題,爲什麼不把它存儲在cookie與瀏覽器內存中?不知道用例,我不能真正提醒。這個職位多久需要一次?如果用戶改變職位會發生什麼?最終目標是什麼? – Twisty