download: 极客大学 - 云原生训练营
后盾代码都是利用的
1.【get 形式】使用 jquery 的 get json 与后盾交互
前端 js 代码片段
var data= {
‘a’: $(‘input[name=”a”]’).val(),
‘b’: $(‘input[name=”b”]’).val()
}
$.getJSON($SCRIPT_ROOT + ‘/_add_numbers’,data, function(data) {
$(‘#result’).text(data.result);
$(‘input[name=a]’).focus().select();
});
后端 pthon 代码如下
ajax,Get 形式与 js 交互 (非表单)采纳了 flask 框架 @app.route(‘/_add_numbers’)def add_numbers():
“””Add two numbers server side, ridiculous but well…”””
a = request.args.get(‘a’, 0, type=int)
b = request.args.get(‘b’, 0, type=int)
log.info(a)
log.info(b) return jsonify(result=a + b)
2.【万能形式】使用 jquery 的 ajax 与后盾交互,设置不同的参数,可能 get 也可能 post
下面的例子用 ajax 形式,前端代码如下
var data= {
'a': $('input[name="a"]').val(),
'b': $('input[name="b"]').val()}
{# $.getJSON($SCRIPT_ROOT + ‘/_add_numbers’,data, function(data) {#}
{# $(‘#result’).text(data.result);#}
{# $(‘input[name=a]’).focus().select();#}
{#});#}
$.ajax({
type: 'get',
url: $SCRIPT_ROOT + '/_add_numbers',
data: data,
contentType: 'application/json; charset=UTF-8',
dataType: 'json',
success: function(data) {$('#result').text(data.result);
$('input[name=a]').focus().select();
},
error: function(xhr, type,xxx) {alert('error')
}
});
后盾代码不便依然是
?
1
2
3
4
5
6
ajax,Get 形式与 js 交互 (非表单)@app.route(‘/_add_numbers’)def add_numbers():
“””Add two numbers server side, ridiculous but well…”””
a = request.args.get(‘a’, 0, type=int)
b = request.args.get(‘b’, 0, type=int)
log.info(a)
log.info(b) return jsonify(result=a + b)
3. 用 ajax 补充一个 post 形式的例子
前端 js 如下
function testmethod ()
{alert('rabbit');
var data = {"name": "test"}
$.ajax({
type: 'POST',
url: '/login',
data:data,
contentType: 'application/json; charset=UTF-8',
dataType: 'json',
success: function(data) {$('#result').text(data.username);
},
error: function(xhr, type) {alert('error')
}
});
}
后盾代码如下:
ajax,post 形式与 js 交互(表单提交)
@app.route(‘/login’,methods=[‘POST’])
def login():
log.info(‘lalal’)
return jsonify(username=’xixi’,pwd=’123′)
这样就很轻松的实现了前端与后盾的交互
本质上,前端与后端交互都是通过 json 实现的
至于表单提交,就不需要写 js 了,在 form 表单外面有有一个 submit 类型按钮,点击时,会主动提交到后盾对应的路由上进行处理。对于表单提交,后盾可能用
?
1
s=request.form.get(‘username’,None)
来捕获前端网页的值。然而如果是非表单提交,则需要用 js 获取值后,通过 data 参数传入到后端才行。
实例扩大:
python 使用 flask 与 js 进行前后台交互的例子
flask 与 js 进行前后台交互代码如下, 后盾给前端发数据:
python 部分:
–– coding: utf-8 ––
from flask import Flask,jsonify,render_template
import json
app = Flask(__name__)# 实例化 app 对象
testInfo = {}
@app.route(‘/test_post/nn’,methods=[‘GET’,’POST’])# 路由
def test_post():
testInfo[‘name’] = ‘xiaoming’
testInfo[‘age’] = ’28’
return json.dumps(testInfo)
@app.route(‘/’)
def hello_world():
return ‘Hello World!’
@app.route(‘/index’)
def index():
return render_template(‘index.html’)
if name == ‘__main__’:
app.run(host=’0.0.0.0′,# 任何 ip 都可能拜访
port=7777,# 端口
debug=True
)
js 部分: