2011-11-03 28 views
0

我想出了一種方法來維護和結合兩個列表,但是我有點困惑,究竟如何在沒有存儲頁面的情況下顯示結果。我認爲.data()可能是解決方案 - 但這對我來說是新的。數據存儲/訪問/寫入/編輯和AJAX調用

基本上我有2所列出:

<ul id="choice_1"> 
    <li><img id="c1_1" src="image_path">Option 1</li> 
    <li><img id="c1_2" src="image_path">Option 2</li> 
    <li><img id="c1_3" src="image_path">Option 3</li> 
</ul> 

<ul id="choice_2"> 
    <li><img id="c2_1" src="image_path">Option A</li> 
    <li><img id="c2_2" src="image_path">Option B</li> 
    <li><img id="c2_3" src="image_path">Option C</li> 
</ul> 
與jQuery

然後我做了一個腳本,在那裏你可以點擊圖片,選擇從左側和右側的列中,當圖像變化的選擇(S)點擊並存儲在兩個隱藏的輸入 - #hidden_1#hidden_2(這部分工作完美,並存儲圖像編號)。我還製作了一個按鈕#transfer,點擊該按鈕可以獲取隱藏文本輸入的值,並重置選項,就好像沒有選擇任何東西一樣。

我首先想到的是,我應該通過ajax將隱藏數據傳遞給#groups,但是因爲我不想將數據保存在MySQL中,直到有人點擊保存按鈕,並且我還想處理數據(所以如果有人選擇選項1和選項A + B,然後選擇選項2並選擇A + B,我將用PHP處理數據,以顯示結果爲選項1 + 2,A + B - 因爲它們有效地結合在一起。然後我將使用ID值來顯示選項的名稱,然後我可以刪除或編輯(通過將數據發回列表)組。存儲數據,但我不確定如何從#groups訪問它因爲它通過ajax被調用。我也認爲這會很方便,尤其是如果我後來在將它們存儲在MySQL中後編輯這些組。我的Ajax調用下面:

var data_array = {}; 
data_array['id'] = $("#hidden_id").val(); // only used when editing 
data_array['c1'] = $("#hidden_1").val(); 
data_array['c2'] = $("#hidden_2").val(); 

$.ajax({ 
    url: "processor.php", 
    type: "POST", 
    data: data_array, 
    success: function(response){ 
     $("#groups").html(response); 
    }, 
    error: function(){ 
     $("#groups").html("<p>Could not process choices</p>"); 
    } 
}); 

processor.php我以爲我可以簡單地調用它$("data").data();訪問.data(),但它似乎只是返回null - 雖然我當時想,即使我可以稱呼它,怎麼能我允許PHP處理數據,所以我想我必須通過ajax傳遞。但是,如何從#groups中刪除某些內容,以便它不會在稍後傳回並顯示出來?或者如何用覆蓋更新的數據覆蓋數據?如果我可以在ajax調用後訪問processor.php中的.data(),寫入它,然後將其提供給頁面的其餘部分,那麼這將是目標。

我希望有人能幫我弄清楚 - 我對.data()有點新,尤其是從裏面有人用ajax調用。

回答

0

看來我需要做這樣的事情是父:

$.ds = ""; 
$.ds = $("#data").data(JSON.parse()); // json_encode the existing php array (if there is one) 

然後,我可以訪問/修改/使用下面的內processor.php更新:

$.ds.data(); 

手指交叉,我可以把它們放在一起按我想要的方式工作 - 迄今爲止僅使用上面的測試數據,仍然 - 如果任何人有更好的方法,最好讓我知道:)