$('element').droppable({
drop:function(event, ui){
$.ajax({
url: '/path/to/my/file.php',
type: 'POST',
data: {'left' : ui.helper.position().left,
'top': ui.helper.position().top},
success: function(data){
//do something with the response from the server
}
});
}
});
而且在/path/to/my/file.php
if(isset($_POST['left'])):
$db = new mysqli('connection info here');
$q = $db->prepare('INSERT INTO some_table (left, top) VALUES (?,?)'); //prepare the statement
$q->bind_param('ss', $_POST['left'], $_POST['top']); //safe binding
if(FALSE !== $q->execute()):
return 'Query Executed!';
endif; //execute the statement
return false;
endif;
所以在PHP文件我們只是簡單地檢查了$_POST
變量left
的存在。我們假設top也將可用。我們建立一個mysqli連接,準備一個安全聲明,將參數綁定爲strings
,使用$_POST
left/topvalues。然後我們檢查執行沒有返回false(返回true/false),如果沒有,我們傳遞一個值並退出條件。如果不是,則默認情況下會返回false。
編輯
從您的意見,您要保存的操作當用戶進行,直到準備實際執行INSERT,這是很容易可行也。
var dc = 0,
drops = {};
dc
將是dropcount
,和drops
將是一個對象。
$('element').droppable({
drop: function(event, ui){
drops[dc] = {'left' : ui.helper.position().left, 'top' : ui.helper.position().top};
dc++;
}
});
在上文中,我們只需通過drops
對象遞增,存儲用於在每個液滴左/頂部值的信息。
$('.save').click(function(e){
e.preventDefault();
$.ajax({
url: 'test.php',
type: 'POST',
data: {'drops': drops},
success: function(data){
console.log(data);
}
});
});
在這裏,我們有一個save類的保存按鈕,我們阻止默認動作,然後我們發送滴對象到服務器。
if(isset($_POST['drops'])):
//same process as outlined above, use a helper function to insert the rows
endif;
現在我們檢查$ _POST變量'drops'是否存在,我們將採用與上面相同的策略。我只是推薦一個幫手function saveDrops($obj)
,迭代返回的drop,併爲傳入的每個obj執行保存。
這似乎是'保存,你去',這是偉大的(我沒有想到這一點,所以謝謝..),但如果我想發送所有的座標作爲一個文件,然後處理,我會怎麼做? ? – 2013-04-27 21:33:11
@Mat Richardson所以你說你想要在javascript中保存一個對象的座標,那麼當用戶執行一些'最終'動作時,我們實際上會插入? – Ohgodwhy 2013-04-27 21:34:00
是的,當用戶點擊'保存級別'按鈕時,我想讓頁面生成一個放置塊的座標列表(或者其他東西),然後將它們發送到php腳本以保存爲一份工作。 – 2013-04-27 21:36:39