我有一个简单的 appengine/python 应用程序,允许用户单击按钮来显示随机生成的句子。到目前为止,我已经将主要的 python 文件拼凑如下:
import jinja2
import os
import webapp2
import generator # My random sentence generator module; its make_sentence() function returns a string
class MainPage(webapp2.RequestHandler):
def get(self):
template = jinja_environment.get_template('main.html')
self.response.out.write(template.render(dict(sentence = generator.make_sentence())))
jinja_environment = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__))
)
application = webapp2.WSGIApplication([
('/', MainPage),
], debug=True)
在main.html中:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css">
<link rel="stylesheet" href="css/custom.css">
<title>Random Sentence Generator</title>
</head>
<body>
<div class="jumbotron">
<p class="lead">{{ sentence }}</p>
<a class="btn-lg btn-info" onclick="makeSentence();return false;" href="#">Generate sentence!</a>
</div>
<script>
function makeSentence(){
location.reload();
}
</script>
<script src="http://code.jquery.com/jquery.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.2/js/bootstrap.min.js"></script>
</body>
<html>
如果这个问题很重要,这里还有 app.yaml:
application: sentence-generator
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /css
static_dir: css
- url: /.*
script: sengen.application
libraries:
- name: jinja2
version: latest
这工作正常(事实上,人们可以尝试一下 here :-) ),但我希望能够生成一个新句子,而无需每次刷新页面。
来自this question ,看起来我可以使用 Ajax 来实现这一点。但我不确定如何将它们组合在一起。我想我可以将 makeSentence()
的内容替换为上一个链接中的最佳答案之类的内容,但我不确定如何将“响应”与我在网页。
最佳答案
您走在正确的道路上。您可以使用 ajax 获取输出并将其放入段落中,而不是调用 location.reload()。首先,在放置句子的段落中添加一个标识符:
<p id="sen1" class="lead">{{ sentence }}</p>
现在剩下的就是使用 AJAX 获取当前页面输出并将其显示在 sen1 中。你可以在 makeSentence 中做类似的事情。 (这将提醒您在ajax中重新加载主页的响应。您可能想从中提取所需的信息。)
function makeSentence() {
$.ajax({
url:'http://sentence-generator.appspot.com'
}
)
.done(function(data) {
alert(data);
})
.fail(function(){
alert('error');
})
.always(function(){
//alert('always');
})
;
}
关于javascript - 使用javascript调用python函数并在网页上显示返回的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20590671/