我想出了一种方法来维护和组合两个列表,但是我有点疑惑如何在没有页面存储的情况下显示结果。我认为.data()
可能是解决方案 - 但这对我来说是新的。
基本上我有两个清单:
<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我创建了一个脚本,您可以在其中单击图像以从左侧和右侧列中选择选项,其中图像更改为onclick并将ID编号存储在两个隐藏的输入中 - {{1 }和#hidden_1
(这部分工作正常,只存储图像ID中的数字)。我还创建了一个按钮#hidden_2
,单击该按钮可获取隐藏文本输入的值,并重置选项,就像没有选择任何内容一样。
我首先想到我应该通过ajax将隐藏数据传递给#transfer
,但是因为我不希望在有人点击保存按钮之前将数据保存在MySQL中,而且我还想处理数据(如果有人选择选项1和选项A + B,然后接下来用A + B选择选项2,我会用PHP处理数据,以显示结果是选项1 + 2,A + B - 因为它们有效然后我会使用ID值来显示选项的名称。然后我可以删除或编辑(通过将数据发送回列表)组。
这让我觉得#groups
可以用来存储数据,但我不确定如何从.data()
访问它,因为它是通过ajax调用的。我还认为这会很方便,特别是如果我以后在将它们存储在MySQL中之后编辑它们。我的ajax电话如下:
#groups
在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()
,但它似乎只返回null - 尽管我认为即使我可以调用它,我怎么能允许PHP处理数据,所以我想我必须通过ajax传递它。但是,我怎么能从$("data").data();
中删除一些内容,以便以后不会被传回并显示出来?或者如何使用更新的编辑覆盖数据?如果我可以在ajax调用之后访问processor.php中的#groups
,写入它,然后将其提供给页面的其余部分,那么这就是目标。
我希望有人可以帮我解决这个问题 - 我对.data()
有点新鲜,尤其是从ajax调用的内部访问/写入。
答案 0 :(得分:0)
似乎我需要做这样的事情是父母:
$.ds = "";
$.ds = $("#data").data(JSON.parse()); // json_encode the existing php array (if there is one)
然后我可以使用以下内容在processor.php
内访问/编辑/更新它:
$.ds.data();
手指交叉,我可以按照我想要的方式将它们全部放在一起 - 到目前为止只使用上面的测试数据仍然 - 如果有人有更好的方法,最好让我知道:)