数据存储/访问/写入/编辑和ajax调用

时间:2011-11-03 10:51:42

标签: javascript jquery

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

1 个答案:

答案 0 :(得分:0)

似乎我需要做这样的事情是父母:

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

然后我可以使用以下内容在processor.php内访问/编辑/更新它:

$.ds.data();

手指交叉,我可以按照我想要的方式将它们全部放在一起 - 到目前为止只使用上面的测试数据仍然 - 如果有人有更好的方法,最好让我知道:)