看到標(biāo)題涮母,你可能會覺得作者比較奇葩谆趾,為什么要把事情搞得這么復(fù)雜?其實(shí)作者也不想這樣叛本,只是去年已經(jīng)用PHP搭建好了系統(tǒng)沪蓬,而且功能、UI等也基本調(diào)試的差不多了来候;現(xiàn)在要借助Python強(qiáng)大而方便的數(shù)據(jù)分析功能來分析數(shù)據(jù)怜跑,最簡單直接的也就是這么做了》涂保或許之后性芬,會考慮用Django等來重構(gòu)整個(gè)系統(tǒng),但這并不是現(xiàn)在的重點(diǎn)剧防。
利用Ajax跨域訪問Flask服務(wù)器
Web前端通過Ajax請求Flask服務(wù)器的接口:
<script type="text/javascript">
$(document).ready(function(){
$("#click_demo").click(function(){
//http request
$.post("http://127.0.0.1:8080/demo",
{
name:$("#param").text(),
},
function(data,status){
//alert("status:" + status + "\ndata:" + data);
var myobj=eval(data);
var result='';
for (var i = 0;i < myobj.length;i++) {
var item='<p>'+myobj[i].name+'</p>';
result=result+item;
}
$("#result-element")[0].innerHTML=result;
$("#result-element").show();
});
});
});
</script>
Ajax跨域請求的時(shí)候可以在服務(wù)端設(shè)置header信息植锉,來達(dá)到跨域請求的目的(不需要通過jsonp的方式設(shè)置ajax參數(shù)):
Response.AddHeader("Access-Control-Allow-Origin", "*");
Flask服務(wù)器端代碼如下:
@app.route('/demo', methods=['POST'])
def home():
result_json = json.dumps(result)
# Response
resp = Response(result_json)
resp.headers['Access-Control-Allow-Origin'] = '*'
return resp
Python操作Json
JSON (JavaScript Object Notation), specified by RFC 7159 (which obsoletes RFC 4627) and by ECMA-404, is a lightweight data interchange format inspired by JavaScript object literal syntax (although it is not a strict subset of JavaScript).
import json
list1 = [20, 6, 15, 53, 47]
list2 = [(6, 'John', '20'), (20, 'David', '21'), (47, 'Amy', '23'), (15, 'Kim', '18'), (53, 'Mary', '20')]
list3 = []
for a in list2:
dict = {}
dict['id'] = a[0]
dict['name'] = a[1]
dict['age'] = a[2]
list3.append(dict)
result = {}
result['id'] = list1
result['data'] = list3
json1 = json.dumps(list1)
json2 = json.dumps(list2)
json3 = json.dumps(list3)
json4 = json.dumps(result)
print(json1)
print(json2)
print(json3)
print(json4)
decode = json.loads(json4)
print(decode)
JS解析Json數(shù)據(jù)
<SCRIPT LANGUAGE="JavaScript">
var t="{'firstName': 'cyra', 'lastName': 'richardson', 'address': { 'streetAddress': '1 Microsoft way', 'city': 'Redmond', 'state': 'WA', 'postalCode': 98052 },'phoneNumbers': [ '425-777-7777','206-777-7777' ] }";
var jsonobj=eval('('+t+')');
alert(jsonobj.firstName);
alert(jsonobj.lastName);
var t2="[{name:'zhangsan',age:'24'},{name:'lisi',age:'30'},{name:'wangwu',age:'16'},{name:'tianqi',age:'7'}] ";
var myobj=eval(t2);
for(var i=0;i<myobj.length;i++){
alert(myobj[i].name);
alert(myobj[i].age);
}
var t3="[['14113295100','社旗縣國稅局橋頭稅務(wù)所','社旗縣城郊鄉(xiāng)長江路西段']]";
//通過eval()函數(shù)可以將JSON字符串轉(zhuǎn)化為對象
var obj = eval(t3);
for(var i=0;i<obj.length;i++){
for(var j=0;j<obj[i].length;j++){
alert(obj[i][j]);
}
}
</SCRIPT>
參考資料: