2010-08-06 30 views
0

我有一個困境,看起來超出了我目前的能力!jQuery,需要'sortreceive'ajax調用和POST變量的幫助

我有一組使用類「biglist」連接的排序。

我想要做的就是綁定#biglist的sortreceive回調(只要列表從另一個列表接收到一個元素就會產生)取出元素的'boxnum'值(它表示它來自哪個列表)執行一個UPDATE查詢,將ID的boxnum值從say 5(列出來)改爲7(列出它被拖動到),以便狀態持續。

所以交換會發生像這樣(大約)

$("#biglist").bind("sortreceive", function(event, ui) { 
    ajax call to boxchange.php 
    create vars to represent elements 'boxnum' value and 'box moved to' value  

}); 

內。然後boxchange.php - >

$id = $_POST['id'] 
$box = $_POST['boxnum'] 
->update query SET boxid to new boxid WHERE id = posted ID of element 

我希望這是有道理的。這似乎是一個非常漂亮的方式讓我的程序工作! 任何幫助,不勝感激。

EDIT: 

剛剛清理功能,看是否有需要它來進行任何更改(我知道有,因爲它看起來稀鬆)此功能將需要複製/改變每個排序分開,但它會完全使程序至少工作!

function ReceiveTwo() 
{ 
$('#sortable2').bind('sortreceive', function(event, ui) 
        { 
         boxnum = $(this).attr('boxnum'); 
         id = $(this).attr('id'); 
         $.ajax 
          ({ 
         url: "boxchange.php", 
         type: "POST", 
         data: boxnum, id, 
         success : function(feedback) 
          { 
          $('#data').html(feedback) 
          } 

          }) 
        }); 
        $('#sortable2').sortable("refresh"); 
}); 
+0

這裏需要一個TLDR子句 – mkoryak 2010-08-06 19:00:31

+0

現在還不清楚它的哪部分不適合你,還說「我有一組使用_class_'biglist'連接的可排序組件。但如果它是一個類,那麼你正在使用#biglist它應該是.biglist。 – 2010-08-06 19:14:47

+0

我的不好,我有一種感覺,我會得到像mkoryak回覆。 我想知道如何通過ajax調用發送兩組數據(我在該示例中編寫它的方式與語法afaik不匹配) 我想在調用之前定義boxnum和id,所以我知道發送,然後在我指定請求類型(POST)之後,我需要能夠將這兩個值發送到我的php腳本來更新數據庫。 這有道理嗎?如果不是,它會重新確認我以其他人會理解的方式詢問這些類型的問題的可怕性。) – Jordan 2010-08-06 19:23:34

回答

0

我想你想你的Javascript數據發送到服務器端的PHP腳本的方法是使用一個Javascript關聯數組,像這樣:

$.ajax({ 
    url: "boxchange.php", 
    type: "POST", 
    data: {'boxnum': boxnum, 'id': id}, 
    success: function(data,status) { ... } 

你「boxchange.php」腳本會那麼可以通過$ _POST ['boxnum']和$ _POST ['id']來訪問這些變量。

我認爲這是你的目標,但我不能完全肯定...

+0

非常接近,我需要確保在將它發送到ajax之前正確定義'boxnum'稱爲'boxnum'。所以$(this).attr('id')對被拖動元素的當前ID很好 - 但是$(this).parent.attr('boxnum')沒有抓住列表的boxnumber接收元素。 我需要抓住這個變量,所以我可以把它發送到我的PHP查詢,將值更改爲該數字:) – Jordan 2010-08-09 15:14:15

+0

好的,這次是100%具體! 當涉及到成功功能和反饋時,該程序是'borked'的。它只是讓它顯示在他們的清單中沒有任何項目......都是空的。 – Jordan 2010-08-09 16:28:44

2
$('#sortable2').bind('sortreceive', function(event, ui) { 
    $.ajax({ 
    url: "boxchange.php", 
    type: "POST", 
    beforesend: function(){ 
     boxnum = $(this).attr('boxnum'); 
     id = $(this).attr('id'); 
    }, 
    data: {'boxnum': boxnum, 'id': id}, 
    success : function(feedback) { 
     $('#data').html(feedback), 
    } 
    }); 
}); 

beforesend是事件Ajax調用之前的火災。我相信在這裏你可以設置你的屬性來完成你想要的。