2011-09-08 5 views
0

내가 this website.문제 예

이에 주어진 양식의 예에서 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에서 ve

노드를 두 개 이상 선택하고 데이터 보내기를 클릭하면 데이터가 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가 동일하므로 하나의 값만 표시됩니다.

어떻게 모든 값을 얻을 수 있습니까?

+0

PHP에 대해 많이 알지는 않지만 하나 이상의 확인란을 선택할 때 같은 문제가있는 경우 ('cb1'), 그것은 dynatree에 문제가되지 않습니다. 어쩌면 당신은 $ HTTP_POST_VARS [ "selNodes"] (그냥 몇몇 Google 결과에서 추측)을 시도해야합니까? – mar10

+0

$ HTTP_POST_VARS은 (는) 사용되지 않는 것으로 보입니다. $ _POST는 – mar10

답변

2

나는 PHP에 대해 잘 모르겠지만, 웹에 대한 몇 가지 체크 박스 샘플은 배열을 통과하기 위해 요소 이름에 괄호를 추가 : 그래서 당신은 시도 할 수

<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> 
+1

이어야합니다.''name = "selNodes []"''트리 정의에서 트릭을 만들었습니다. 그리고 PHP에서 배열로 값을 읽을 수 있습니다. 대단히 감사합니다. – Lixas

-2

// submit 대신 ajax를 사용하십시오.

$("#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); }); 
    
  }, 
+0

서식을 수정하려고했습니다. 나는 자바 스크립트 전문가는 아니지만, 이것은 불완전한 코드처럼 냄새가 난다. –