Tôi biết JSON để giải quyết vấn đề này, nhưng tôi có vấn đề trong việc triển khai nó. Dưới đây là chi tiết của phương pháp của tôi:Gửi dữ liệu từ Python sang Javascript (JSON)
- dữ liệu được tính toán bằng Python
- Kể từ khi kích thước của dữ liệu là năng động, vì vậy tôi cần phải sử dụng JavaScript để tạo thêm hàng bảng HTML cho kết quả đầu ra của tôi. Kết quả là, tôi cần truyền dữ liệu từ Python sang JavaScript để cho phép Javascript 'xem' dữ liệu.
HTML Code (dưới đây là một phần của mã HTML của tôi để tạo trang đầu ra):
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> </td>
<td>%s</td>
</tr>
<tr>
<td>parameter 2</td>
<td> </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)
Mã JavaScript (tôi sử dụng JavaScript để tạo đầu vào bổ sung bảng trên filename bay: '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> </td><td>out_json</td>').appendTo('.app')
</script>
Cảm ơn sự trợ giúp!
Bạn có thể giải thích, tại sao chính xác là bạn đang cố truyền dữ liệu trong cùng một mẫu mà sau đó sẽ tạo mã HTML? Tôi không thấy bất kỳ tải động nào (như AJAX) trong câu hỏi của bạn, chỉ không phải mã JavaScript cần thiết sẽ tạo ra một phần của mẫu mà bạn không thể tạo bằng cách sử dụng Python. Tôi có đúng không? – Tadeck
@Tadeck, lý do sử dụng JavaScript là vì tôi cần sử dụng JavaScript để tạo các bảng html. Ngoài ra, kích thước dữ liệu của tôi là động. Vì vậy, tôi nghĩ tốt hơn là sử dụng JSON để chuyển dữ liệu sang JavaScript và để cho nó xử lý nó. Ngoài ra, tôi cũng cần phải sử dụng Jqplot để tạo ra các số liệu. Hiện tại, tôi tạo tất cả các giá trị trong bảng html ẩn và cho phép JavaScript nhận chúng bằng cách chọn tên id. Nhưng tôi nghĩ rằng nên có một cách tốt hơn để làm điều này. –
@Tao, dữ liệu có đang được cập nhật năng động không? Có nghĩa là người dùng sẽ thấy thay đổi dữ liệu khi đang di chuyển mà không cần làm mới trang? Nếu nó là động, bạn sẽ cần mã AJAX để yêu cầu dữ liệu JSON từ một URL chỉ trả về JSON (không có HTML). Nếu dữ liệu được biết khi trang được tải, thì bạn chỉ cần thêm cấu trúc dữ liệu JavaScript vào mẫu trang của bạn. Không yêu cầu JSON hoặc AJAX. – jiggy