我想出了一种方法来维护和结合两个列表,但是我有点困惑,究竟如何在没有存储页面的情况下显示结果。我认为.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调用。