[英]Issue in Dynatree Embed in forms Example
这是脚本代码:
<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.