2012-08-14 8 views
8

이 문제를 해결하기 위해 JSON을 알고 있지만 문제가 있습니다.Python에서 Javascript (JSON)로 데이터 보내기

  1. 데이터가
  2. 데이터의 크기가 동적이기 때문에 파이썬
  3. 으로 계산, 그래서 난 내 출력을위한 별도의 HTML 테이블 행을 만들 자바 스크립트를 사용할 필요가 : 여기 내 접근 방식의 세부 사항입니다. 결과적으로 Javascript가 데이터를 '보도록'하기 위해 Python에서 JavaScript로 데이터를 전달해야합니다.

HTML 코드 (아래의 출력 페이지를 생성하기 위해 내 HTML 코드의 섹션) :

class OutputPage(webapp.RequestHandler): 
    def func (a,b): 
     return a+b #just an example 

    def get(self): 
     form = cgi.FieldStorage() 
     chem_name = form.getvalue('chemical_name') 
     Para1 = form.getvalue('Para1') #get values from input page--user inputs 
     Para1 = float(Para1) 
     Para2 = form.getvalue('Para2') #get values from input page--user inputs 
     Para2 = float(Para2) 
     out = func (Para1,Para1) 
     out_json=simplejson.dumps(out) # I need to send out to JavaScript 
     #writ output page 
     templatepath = os.path.dirname(__file__) + '/../templates/' 
     html = html + template.render (templatepath + 'outputpage_start.html', {}) 
     html = html + template.render (templatepath + 'outputpage_js.html', {})    
     html = html + """<table width="500" class='out', border="1"> 
          <tr> 
          <td>parameter 1</td> 
          <td>&nbsp</td>        
          <td>%s</td> 
          </tr> 
          <tr> 
          <td>parameter 2</td> 
          <td>&nbsp</td>        
          <td>%s</td> 
          </tr>              
          </table><br>"""%(Para1, Para2) 
     html = html + template.render(templatepath + 'outputpage_end.html', {}) 
     #attempt to 'send' Python data (out_json) to JavaScript, but I failed. 
     html = html + template.render({"my_data": out_json}) 
     self.response.out.write(html) 

app = webapp.WSGIApplication([('/.*', OutputPage)], debug=True) 

자바 스크립트 코드 (나는 즉시 파일 이름에 추가 입력 테이블 만들기 위해 자바 스크립트를 사용 : 'outputpage_js합니다. html ') :

<script> 
<script type='text/javascript'> 

$(document).ready(function(){ 
    //I assume if my Json statement works, I should be able to use the following argument to create a HTML row 
    $('<tr><td>Parameter 2</td><td>&nbsp</td><td>out_json</td>').appendTo('.app') 

</script>  

감사합니다. tadeck는 지적 :

try: 
    import simplejson as json 
except: 
    import json 
out = {'key': 'value', 'key2': 4} 
print json.dumps(out) 

편집 : 당신이 JSON을 "실행"할 필요가 없습니다

+0

왜 정확히 HTML 코드를 생성 할 동일한 템플릿에서 데이터를 전달하려고하는지 설명해 주시겠습니까? 질문에 동적 로딩 (AJAX 같은)이 표시되지 않으며 Python을 사용하여 생성 할 수없는 템플릿의 일부만 생성하는 필수 JavaScript 코드는 아닙니다. 나 맞아? – Tadeck

+0

@Tadeck, 자바 스크립트를 사용하는 이유는 자바 스크립트를 사용하여 HTML 표를 만들어야하기 때문입니다. 또한 데이터의 크기가 동적입니다. 따라서 JSON을 사용하여 JavaScript에 데이터를 전달하고이를 처리하도록하는 것이 더 바람직하다고 생각합니다. 또한 Jqplot을 사용하여 수치를 생성해야합니다. 현재 숨겨진 html 테이블에 모든 값을 생성하고 ID 이름을 선택하여 JavaScript를 가져옵니다. 그러나 나는 이것을 할 수있는 더 좋은 방법이 있어야한다고 생각합니다. –

+0

@ Tao는 동적으로 업데이트되는 데이터입니까? 사용자가 페이지 새로 고침없이 즉석에서 데이터 변경 사항을 볼 수 있습니까? 동적 인 경우 JSON 만 반환하는 URL (HTML 없음)에서 JSON 데이터를 요청하려면 AJAX 코드가 필요합니다. 페이지가로드 될 때 데이터를 알면 페이지 템플릿에 JavaScript 데이터 구조 만 추가하면됩니다. JSON 또는 AJAX가 필요하지 않습니다. – jiggy

답변

관련 문제