2013-07-09 25 views
-1

我正在对从MS SQL服务器数据库提取的某些数据生成强制导向布局(使用d3.js http://bl.ocks.org/mbostock/raw/4062045/)。目前我正在使用python脚本生成json文件,然后使用python -m SimpleHTTPServer在本地服务器上运行它。显示进度条或阻止UI直到生成文件服务器端

我想要做的是在我的python脚本和HTML之间创建一个链接,当我输入web地址时,python脚本应该在服务器端运行并生成json文件。在此期间,我需要阻止用户界面。生成文件时,图形应显示在屏幕上。我可以分别生成图形和json文件。需要把它们放在一个blockui或进度条(我认为进度条会太多)。

我是javascript和web开发的小菜鸟,有点在学习时创建我的图形。任何在这方面的指导将非常感激。

感谢,

Prateek

编辑:

代码为现在的片段如下:

d3.json("json_data.json", function(error, graph) 
{ 

    var nodeMap = {}; 
    graph.nodes.forEach(function(x) { nodeMap[x.name] = x; }); 
    graph.links = graph.links.map(
    function(x) 
    { 
    return { 
     source: nodeMap[x.source], 
     target: nodeMap[x.target], 
     value: x.value 
     }; 
    }); 

    force 
     .nodes(graph.nodes) 
     .links(graph.links) 
     .start(); 

此代码,我将投入下的成功部分的ajax请求。我希望脚本发送ajax请求一分钟以查看服务器上是否存在json_data.json文件,并在文件创建时显示旋转轮,如果时间用完,控制权转移到错误部分请求。

JSON文件非常简单,只需:

nodes: {} 
links: {} //without any children level of depth. 
+0

你不能有一个真正的进度条(除非你做了一大堆不值得的工作)。你只需要一个旋转轮或类似的东西就行吗? – GJK

+0

是的。这就是为什么我说进度条太多的工作..纺轮会很好。任何体面的,我可以阻止用户界面。 –

+0

你可能想重新考虑你的方法。阻止用户界面通常不是一件好事。 – Dom

回答

1

如果您正在使用jQuery,看看http://api.jquery.com/jQuery.ajax/,以了解如何创建Ajax请求。您可能希望将请求放在页面的$(document).ready()函数的开头。然后,您可以像上面提到的那样使用blockUI,然后在启动ajax调用之前阻止该页面,然后解除在您的ajax调用中定义的成功和错误(或完成)回调的阻止。像下面这样:

$(document).ready(function() { 
    $('body').blockUI(); 
    $.ajax({ 
     url: http://www.example.com/pathYouAreListeningOn, 
     data: { 
      "dataYouNeedToSend" : "Here" 
     }, 
     success: function(result, status, xhr) { 
      $('body').unblockUI(); 
      // Whatever you need to do to display your graph 
     }, 
     error: function(xhr,status,error) { 
      $('body').unblockUI(); 
     } 
    }); 
}); 

事情需要注意的是,如果你的URL的请求将会是你在网页的网址,你不需要把它列入,如果你不具备任何需要与ajax请求一起发送的数据,您也可以关闭。

+0

感谢您的快速回复。在我的情况下,成功将被定义为在服务器端找到的json文件(这将是python脚本成功运行的结果)。但我不知道如何在请求中包装这个。我有epython文件只做处理,html页面和JavaScript,从json中提取数据并将其显示在浏览器上。所以理想情况下, http://www.example.com/index.html将始终存在。它的data.json文件,我想检查成功或错误。 –

+0

我不确定你的意思是把它包装在请求中,你的意思是回应?如果你的脚本返回一些东西,成功的回调将会被调用。只有在ajax调用出现问题时才会调用错误回调。你可能想看看这个问题的答案如何形成json结果:http://stackoverflow.com/questions/10721244/ajax-posting-to-python-cgi注意python的结果如何包含成功和一条消息,你可能想要做类似的事情。 – Jahorse

+0

谢谢Jahorse。那正是我所期待的。 –