2017-03-06 42 views
2

我正在D3中工作...基于输入我想从数据库中获取数据到D3 ..当我在输入字段中输入一些单词并单击提交工作正常...在D3中没有问题...但是当我改变输入字段时,在提交按钮中没有任何操作..它想要我刷新以搜索新的单词...在任何错误的这样我在这里使用了AJAX ..当基于D3的输入获取数据时Ajax无法工作

  $(function (all) { 
      $('form').on('submit', function (e) { 
      e.preventDefault(); 
       var t=$('form').serialize(); 
       var u='http://localhost:8888/saff/indexi.php?'+t; 
      $.ajax({ 
      url:u, 
      async:true, 
      success:function(data){ 
      funn(); 
      } 
      }); 
     function funn(){ 
    d3.json(u, function(treeData) { 
      //d3 code 
       }); 
     } 
     }); 
     }); 

其次,当我改变的形式输入作为

 <form name="editorForm" id="formi"> 
    <input type="text" name="editor" 
    id="editor" onchange="document.getElementById('formi').submit();"/> 
    <input type="submit"value="butn"> 
    <br /> 
    </form> 

型字在外地和SUBM它只是使在URL变化 http://localhost:8888/saff/keyy.htmlhttp://localhost:8888/saff/keyy.html?editor=அகடம்并没有在网页 我应该如何使用AJAX在D3去D3基于输入从PHP数据显示,无需刷新页面

问题是 *当提交第一个词它在WEBPAGE中正确设计时 *当我更改输入文本时,第二个设计来自第一个设计 为什么ajax不工作??? UPDATE 我的完整代码

  <!DOCTYPE html> 
      <html> 
      <head> 
     <meta http-equiv="Content-Type" 
       content="text/html; charset=utf-8" /> 
      <title>Tring Reset</title> 
      <style> 
      .node { 
       cursor: pointer; 
      } 
      .overlay { 
       background-color:white; 
      } 
      .node circle { 
       fill: #fff; 
       stroke: steelblue; 
       stroke-width: 1.5px; 
      } 
      .node text { 
       font: sans-serif; 

       text-align: center; 
      } 
      .link { 
       fill: none; 
      } 
      .parent{ 
      fill :red; 
      font-weight:lighter; 
      } 
      div#tooltip { 
       position: absolute;   
        font: 15px sans-serif;   
       background: orange; 
       border-radius: 8px;  
        padding-left: 5px; 
        padding-right: 5px; 
       pointer-events: none;   
      } 
      </style> 
      <script src="//d3js.org/d3.v3.min.js"></script> 
      <script src="jquery-1.11.1.min.js"></script> 
      </head> 
      <body> 
      <form name="editorForm"> 
        <input type="text"name="editor"/> 
      <input type="submit"value="butn"> 
      </form> 
      <div id="tooltip" style="display:none"></div> 
      <div id="tree-container"class="full"></div> 
      <script> 
      $('form').find(':submit').on('click', function() { 
        var t = $('form').serialize(); 
        var u = 'http://localhost:8888/saff/indexi.php?' + t; 
          $.ajax({ 
           url: u, 
           async: true, 
           success: function(data) { 
            funn(data); 
           } 
          }); 
      function funn(){ 
      var selectedNode = null; 
      var draggingNode = null; 

      var panSpeed = 200; 
      var panBoundary = 0; 

      var i = 0; 
      var duration = 750; 
      var root; 

      var width = $(document).width(); 
      var height = $(document).height(); 

      var diameter = 750; 

      var tree = d3.layout.tree().size([360, diameter/2 - 120]) 

       .separation(function (a, b) { 
       return (a.parent == b.parent ? 1 : 5)/a.depth; 
      }); 
      var diagonal = d3.svg.diagonal.radial() 
      .projection(function (d) { 
       return [d.y, d.x/180 * Math.PI]; 
      }); 
      d3.json(u, function(error, treeData) { 
       if (error) throw error; 
      root = treeData; 
      root.x0 = height/2; 
      root.y0 = 0; 
      root = treeData; 
      root.x0 = height/2; 
      root.y0 = 0; 

      function sortTree() { 
       tree.sort(function (a, b) { 
       return b.name.toLowerCase() < a.name.toLowerCase() ? 1 : -1; 
       }); 
      } 
      sortTree(); 
      var baseSvg = d3.select("#tree-container").append("svg") 
       .attr("width", 1200) 
       .attr("height",1200) 
       .attr("class", "overlay") 

      .attr("transform", "translate(" + 1000 + "," + 1000 + ")"); 
      function collapse(d) { 

       if (d.children) { 
        d._children = d.children; 
        d._children.forEach(collapse); 
        d.children = null; 
       } 

      update(d); 
      } 

      function expand(d) { 

       if (d._children) { 
        d.children = d._children; 
        d.children.forEach(expand); 
        d._children = null; 
       } 
      } 
      function toggleChildren(d) { 

       if (d.children) { 
        d._children = d.children; 
        d.children = null; 
       } else if (d._children) { 
        d.children = d._children; 
        d._children = null; 
       } 
       return d; 
      } 

      function click(d) { 
      if(!d.parent){ 
      return; 
      } 

      if (!d.children) 
       treeData.children.forEach(collapse); 

       if (d3.event.defaultPrevented) return; 

       d = toggleChildren(d); 

       update(d); 
      } 
      function update(source) { 
       var levelWidth = [1]; 
       var childCount = function (level, n) { 
        if (n.children && n.children.length > 0) { 
      if (levelWidth.length <= level + 1) levelWidth.push(0); 

         levelWidth[level + 1] += n.children.length; 
         n.children.forEach(function (d) { 
          childCount(level + 1, d); 
         }); 
        } 
       }; 
       childCount(0, root); 
       var nodes = tree.nodes(root); 
       links = tree.links(nodes); 
       node = svgGroup.selectAll("g.node") 
        .data(nodes, function (d) { 
        return d.id || (d.id = ++i); 
       }); 
        var nodeEnter = node.enter().append("g") 

        .attr("class", "node") 

       .on('click', click) 

        nodeEnter.append("circle") 
        .attr("class", "smallcircle") 
         .style("stroke", function(d) { 
        return d.color; 
       }) 


       nodeEnter.append("text") 

       .text(function (d) { 
        return d.name; 
       }) 

        .style("opacity", 1) 
        .style("fill-opacity", 0) 

      .on("mouseover", function (d) { 
      var r = d3.select(this).node().getBoundingClientRect(); 
         d3.select("div#tooltip") 
          .style("display", "inline") 
          .style("top", (r.top-25) + "px") 
          .style("top", 10 + "px") 
         .style("left", (d3.event.pageX) + "px")  
          .style("top", (d3.event.pageY - 40) + "px") 
          .style("left", r.left + 40+"px") 
          .style("left", + "px") 
          .style("position", "absolute") 
          .text(d.t); 
        }) 
       .on("mouseout", function(){ 
        d3.select("div#tooltip").style("display", "none") 
       }) 


       node.select("circle.nodeCircle") 
        .attr("r", 4.5) 
        .style("fill", function (d) { 
        return d._children ? "red" : "#fff"; 
       }); 
      var nodeUpdate = node.transition() 
        .duration(duration) 
      .attr("transform", function (d) { 
     return "rotate("+(d.x - 90)+") 
      translate("+ d.y +")rotate(" + (-d.x + 90) + ")"; 
       }); 

       nodeUpdate.select("circle") 
        .attr("r", 4.5) 

        .style("fill", function (d) { 
        return d._children ? "lightsteelblue" : "#fff"; 
       }); 

       nodeUpdate.select("text") 

        .style("fill-opacity", 9) 
       .attr("fill",function(d){return (d.children?"red":"black");}) 
     .attr("font-size",function(d){return (d.children?"20px":"12px");}) 
      .attr("dy", ".35em") 

        .attr("text-anchor", function (d) { 
        return d.x < 180 ? "start" : "end"; 
       }) 


        .attr("transform", function (d) { 
      return d.x < 180 ? "translate(8)" : "rotate(360)translate(-8)"; 
       }); 

       var nodeExit = node.exit().transition() 
        .duration(duration) 
        .attr("transform", function (d) { 
        return "translate(" + source.x + "," + source.y + ")"; 
       }) 
        .remove(); 

       nodeExit.select("circle") 
        .attr("r", 0); 

       nodeExit.select("text") 
        .style("fill-opacity", 0); 


       var link = svgGroup.selectAll("path.link") 
        .data(links, function (d) { 
        return d.target.id; 
       }) 
      link.style("stroke", function(d) { 
        return d.color; 
       }) 

       link.enter().insert("path", "g") 
        .attr("class", "link") 
        link.style("stroke", function(d) { 
        return d.target.color; 
       }) 
        .attr("d", function (d) { 
        var o = {x: source.x, y: source.y}; 
        return diagonal({source: o, target: o}); 
        }); 


       link.transition() 
        .duration(duration) 
        .attr("d", diagonal); 


       link.exit().transition() 
        .duration(duration) 
        .attr("d", function (d) { 
         var o = {x: source.x, y: source.y}; 
        return diagonal({source: o, target: o}); 
        }) 

        .remove(); 
      nodes.forEach(function (d) { 
        d.x0 = d.x; 
        d.y0 = d.y; 
       }); 
      } 
      var svgGroup = baseSvg.append("g") 
      .attr("transform", "translate(" + 550 + "," + 300 + ")") 
     d3.selectAll("text").style("fill", function (d) 
     { return d3.select(this).classed(d.cond, true); }) 
      root.children.forEach(function (child) { 
       collapse(child); 
      }); 
      update(root); 
      d3.select(self.frameElement).style("height", width); 
      }); 
      } 
      return false; 
      }); 
      </script> 
      </body> 
      </html> 

终于出现在控制台但输入改变D3的设计没有路径错误显示下面的第一个输入设计 任何想法?为什么AJAX是不是在这里工作?

回答

0
$('form').find(':submit').on('click', function() { 
    var t = $('form').serialize(); 
    var u = 'http://localhost:8888/saff/indexi.php?' + t; 
    $.ajax({ 
     url: u, 
     async: true, 
     success: function(data) { 
      funn(data); 
     } 
    }); 

    function funn(treeData) { 
     d3.json(u, function(error, treeData) { 
      //d3 code 
     }); 
    } 
    return false; 
}); 
+0

谢谢您先生,为您的回应和兴趣在这里...但遗憾地说,仍然问题不清楚..plz在问题中看到我的控制台图片..控制台中有一些变化。 。但不在网页 – prog

+0

你的路径中的文件实际上是否包含“i”'indexi.php'? – Rick

+0

是的,我把php文件命名为indexi.php .. – prog