繁体   English   中英

Dynatree中的问题嵌入表格示例

[英]Issue in Dynatree Embed in forms Example

我正在尝试将dynatree嵌入本网站提供的表单示例中

这是脚本代码:

<script type="text/javascript">
    $(function(){
        $("#tree").dynatree({
        checkbox: true,
        selectMode: 3,
        onSelect: function(select, node) {
    // Display list of selected nodes
    var selNodes = node.tree.getSelectedNodes();
    // convert to title/key array
    var selKeys = $.map(selNodes, function(node){
         return "[" + node.data.key + "]: '" + node.data.title + "'";
    });
    $("#echoSelection4").text(selKeys.join(", "));
  },


            // In real life we would call a URL on the server like this:
//          initAjax: {
//              url: "/getTopLevelNodesAsJson",
//              data: { mode: "funnyMode" }
//              },
            // .. but here we use a local file instead:
            initAjax: {
                url: "sample-data3.json",
                data: { mode: "funnyMode" }
                },
            onActivate: function(node) {
                $("#echoActive").text(node.data.title);
            },
            onDeactivate: function(node) {
                $("#echoActive").text("-");
            }
        });
        $("form").submit(function() {
  // Serialize standard form fields:
  var formData = $(this).serializeArray();

  // then append Dynatree selected 'checkboxes':
  var tree = $("#tree").dynatree("getTree");
  formData = formData.concat(tree.serializeArray());

  // and/or add the active node as 'radio button':
  if(tree.getActiveNode()){
    formData.push({name: "activeNode", value: tree.getActiveNode().data.key});
  }

  alert("POSTing this:\n" + jQuery.param(formData));

  $.post("<?php echo APP_URL;?>admin/submit_data.php",
       formData,
       function(response, textStatus, xhr){
         alert("POST returned " + response + ", " + textStatus);
       }
  );
  return false;
});


    });
</script>

<body>标记内:

<form>
Username: <input type="text" name="userName" />
<br>
<textarea name="comment"></textarea>
<br>
<input type="radio" name="rb1" value="foo" checked> Foo
<input type="radio" name="rb1" value="bar"> Bar
<input type="radio" name="rb1" value="baz"> Baz
<br>
<input type="checkbox" name="cb1" value="John" checked>John
<input type="checkbox" name="cb1" value="Paul">Paul
<input type="checkbox" name="cb1" value="George">George
<input type="checkbox" name="cb1" value="Ringo">Ringo
<br>

<!-- The name attribute is used by tree.serializeArray()  -->
<div id="tree" name="selNodes">
</div>

<input type="submit" value="Send data">

而在submit_data.php中

print_r($_POST);

当我选择多个节点并单击“发送数据”时,数据将发布到Submit_data.php。 当我通过Firebug在控制台选项卡下检查发布参数时,我正在获取以下数据。

 comment    test
 rb1    foo
 selNodes   restaurant1
 selNodes   screen1
 selNodes   screen2
 selNodes   screen3
 userName   gaurav

但是print_r($_POST)打印以下数据:

 Array
(
[userName] => gaurav
[comment] => test
[rb1] => foo
[cb1] => John
[selNodes] => screen3
)

理想情况下,我应该获得selNodes的所有值。 但是根据我的理解,由于参数名称是所有节点的selNodes相同,所以我仅获得一个值。

我如何获得所有价值?

我对PHP不太了解,但是Web上的一些复选框示例将大括号附加到元素名称上,以传递数组:

<input type="checkbox" name="cb1[]" value="John" checked>John
<input type="checkbox" name="cb1[]" value="Paul">Paul
<input type="checkbox" name="cb1[]" value="George">George
<input type="checkbox" name="cb1[]" value="Ringo">Ringo

所以你可以尝试

<div id="tree" name="selNodes[]">
</div>

//使用ajax而不是Submit

$("#tree").dynatree({
checkbox: true,      
selectMode: 3,
            title: "mydyna",
            fx: { height: "toggle", duration: 200 },
            autoFocus: false, 
 onSelect: function(select, node) {     
   // Get a list of all selected nodes, and convert to a key array:    
    var selKeys = $.map(node.tree.getSelectedNodes(), function(node){          return node.data.key;        });        
request = $.ajax({ url: "./admin/submit_data.php?getselect=true", type: "post", data: "k="+selKeys.join(", ") }); 
request.done(function (response, textStatus, jqXHR){ $("#ajaxreturn").text( response ); });
   
   },

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM