Flask使用ajax進行前後端互動
html表單:
<div style="width:100px;float:left;margin-left:35px;"> <form method="post" enctype="multipart/form-data" id="test_form" style="margin-top:45px;"> <a href="javascript:;" class="file button red">選擇照片 <input type="file" name="photo" id="photo"> </a> <a type="button" class="file button red" id="tj" onclick="ajaxForm()">上傳照片</a> <a class="file button red" data-reveal-id="myModal">手動裁剪</a> </form> </div>
Js程式碼:
注意,需要引入jquery。data為獲取的表單資料,以json格式通過post方法傳入後臺,成功後從後臺獲取資料data,失敗則彈出error。function ajaxForm(){ var form= new FormData(document.getElementById("test_form")); $.ajax({ url:"{{ url_for('api_upload') }}", type:"post", data:form, dataType: 'json', processData:false, contentType:false, success:function(data){ $(img_url_new).attr("src",data.img_url_new); $(imgPic).attr("src",data.img_url_new); }, error:function(e){ alert("error"); } }) }
後臺接收程式碼:
通過上傳圖片的小例子我們大概瞭解了Flask使用ajax互動的基本方式,下面通過一個更加符合ajax使用場景的例子來加深理解它。如,有這樣一個場景,我們希望滑鼠點選圖片時將點選座標傳入後臺,這時就必須使用ajax來實現了。html頁面程式碼:@app.route('/up_photo', methods=['POST'], strict_slashes=False) def api_upload(): file_dir = os.path.join(basedir, app.config['UPLOAD_FOLDER']) if not os.path.exists(file_dir): os.makedirs(file_dir) f = request.files['photo'] if f and allowed_file(f.filename): fname = secure_filename(f.filename) ext = fname.rsplit('.', 1)[1] new_filename = Pic_str().create_uuid() + '.' + ext print new_filename f.save(os.path.join(file_dir, new_filename)) img_url = ip+'show/'+new_filename img_url_new = ip+'show/'+new_filename #處理後的圖片,假資料 return jsonify({"success": 200, "msg": "上傳成功", "img_url": img_url, "img_url_new": img_url_new}) else: return jsonify({"error": 1001, "msg": "上傳失敗"})
<div id="myModal" class="reveal-modal">
<h1>點選選擇裁剪座標</h1>
<div class="uploader blue">
<img id="imgPic" src="{{ url_for('static', filename='img/1.jpg') }}" onclick="Show(this)" style="width:300px;height:270px;"/>
X:<input id="xxx" type="text" style="width:30px;"/> Y:<input id="yyy" type="text" style="width:30px;"/>
</div>
<a class="close-reveal-modal">×</a>
</div>
js程式碼:
<!--獲取圖片座標-->
function mousePosition(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
function mouseMove(ev){
ev = ev || window.event;
var mousePos = mousePosition(ev);
document.getElementById('xxx').value = mousePos.x;
document.getElementById('yyy').value = mousePos.y;
}
document.onmousemove = mouseMove;
function Show(el){
var x = parseInt(document.getElementById('xxx').value)-el.offsetLeft;
var y = parseInt(document.getElementById('yyy').value)-el.offsetTop;
var data= {
data: JSON.stringify({
'x': x,
'y': y
}),
}
$.ajax({
url:"{{ url_for('img_operate') }}",
type:"post",
data:data,
dataType: 'json',
success:function(data){
//成功後的一些操作
},
error:function(e){
alert("error");
}
})
}
注意,我們這裡通過json格式將資料傳入後臺:var data= {
data: JSON.stringify({
'x': x,
'y': y
}),
}
那麼後臺如何接收x、y軸座標呢?data = json.loads(request.form.get('data'))
x = data['x']
y = data['y']
以上為接收ajax前臺傳入資料的方法,後臺路由方法完整程式碼:# 座標操作圖片處理的按鈕路由
@app.route('/img_operate', methods=['POST'])
def img_operate():
data = json.loads(request.form.get('data'))
x = data['x']
y = data['y']
print(x)
print(y)
img = 'http://localhost:5000/static/img/1.jpg'
return jsonify({"success": 200, "img": img, "x": x, "y": y})
以上這些介紹了ajax前後臺互動的基本方法。相關推薦
Flask使用ajax進行前後端互動
ajax前後端互動的使用已經非常普及了, 這種資料互動方式比表單提交資料帶給使用者的使用體驗更好一些。同時,利用ajax互動時資料傳輸一般使用json,我們可以很方便的管理我們所需要的資料。只需要定義好
layui進行分頁處理,後端返回資料沒有count欄位,需要單獨獲取再新增到資料中,再進行項渲染,另有layui表格資料增刪改查前後端互動
整體效果圖如下: (1)分頁前端介面處理 (2)分頁後端的資料處理 具體程式碼如下: 前端介面程式碼:包括分頁,增刪改查,重新整理(搜尋功能還沒做,後端是java程式碼) <!DOCTYPE html> <html> <hea
【Android】- 搭建伺服器進行前後端的互動
Web服務端和客戶端的互動,Okhttp請求的方式,包括get 和 post ,請求圖片,伺服器的搭建。 1.下載tomcat和Eclipse 找到相應的版本進行下載,並進行環境的搭配 2.下載struts框架,進行管理 找到最新版本進行下載: 3.Eclipse新
SSM框架用JSON進行前後端數據傳輸
回調函數 fse 刷新 number 返回結果 itl 美化 label -o 一個根據用戶id查找用戶信息的簡單功能,使用JSON進行數據的傳輸 前端代碼 這裏用bootstrap做簡單的樣式美化,中間留了個div用來異步的顯示查詢結果,ajax進行前端的數據傳輸(c
php中使用ajax進行前後端json數據交互
前端 array char 取數 方式 註冊界面 test 傳輸 created (最近在學習ajax,所以想自己總結一下在PHP中如何使用ajax技術!) 一、ajax註意點: 1、原理圖:(來自韓順平ajax視頻) 2、ajax返回數據類型
jsp前後端互動以及請求轉發和請求包含
request物件 作用: 獲得請求引數: 請求方式: API: 獲得引數: 前後端互動 涉及到前後端互動的都很重要 getParameter(“name”); 能夠獲得前段頁面提交的引數: Returns the value of a request pa
基於Node.js的ajax前後端互動的例子
前端程式碼: <!DOCTYPE html> <html lang="en"> &
springboot+mybatis+thymeleaf專案搭建及前後端互動
前言 spring boot簡化了spring的開發, 開發人員在開發過程中省去了大量的配置, 方便開發人員後期維護. 使用spring boot可以快速的開發出restful風格微服務架構. 本文將詳細的介紹如何搭建一套spring boot 專案, 實現前後端互動. 開發工具 : IDEA&nbs
一個原生的靜態html專案需要前後端互動或測試的時候怎麼辦呢?(在本地開啟http服務)
我們做專案的時候有時用webpack ,glup,什麼的都會生成一個本地地址,但是原生的沒有,這時候當你需要前後端互動,或者測試說我們連你IP在你本地先測吧!這時候該怎麼辦呢,不可能臨時換成vue,或者其他的沒有必要。於是問了一下別人叫了我一個很使用的方法! 要像使用這個方法前提是你已經安裝了n
類Flask實現前後端互動之程式碼聊天室
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
如何使用ajax實現多條刪除及前後端互動
/*多條刪除,以下程式碼是本人在springCloud中寫的, 但是方法都大同小異,你看懂了,也就會了*/ JSP頁面如下: <%@ page language='java' pageEncoding='UTF-8'%> <%@tagli
Atitit 前後端互動模式 目錄 1.1. Ajax 1 1.2. Fetch api 1 1.3. 服務端指令碼模式(簡單快速) 1 1.4. 瀏覽器注入物件、函式 1 1.5. 瀏覽器外掛模式
Atitit 前後端互動模式 目錄 1.1. Ajax 1 1.2. Fetch api 1 1.3. 服務端指令碼模式(簡單快速) 1 1.4. 瀏覽器注入物件、函式 1 1.5. 瀏覽器外掛模式 1 1.6. other 1 &
BigDecimal/Long 前後端互動失去精度解決方法
問題 發現一個詭異的現象,資料庫儲存的bigDecimal型別的資料,經過springboot返回給前端資料丟失了幾位小數,例如 222233334444.01134567(後端)>222233334444.01135(前端)。經過查資料,在Controller層通過@Resp
PHP 前後端互動 獲取AUTHORIZATION認證
修改檔案:.htaccess 修改位置:入口檔案同級目錄 修改內容: Apache伺服器下,我們需要開啟rewrite_module模組 新增主要程式碼:HTTP_AUTHORIZATION 是你獲取 HTTP:Authorization 的 key 值 及:獲取方式 $
初識 vue —— 最簡單的前後端互動示例
一、學習 vue 面臨的問題 最近想學一門前端技術防身,看到部落格園中寫 vue 的多,那就 vue 吧。都說 vue 的官方教程寫得好,所以我就從官方教程開始學習。官方教程說“Vue (讀音 /vjuː/,類似於 view) 是一套用於構建使用者介面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以
學習學習Spring,前後端互動方式
最近在修煉程式碼,學習了SSM框架,學到了其中一個關鍵點就是前後臺如何互動的,首先要知道,Spring是如何在前端如何輸出內容的,就是通過 @Controller @RequestMapping("/viewContent") public class CollegeMan
教你搭一個簡單的前後端互動小網站
最近想自己搭一個網站,但僅僅會前端還是有點做不到實際情況中的前後端互動,就自己瞎鼓搗了幾個工具,來搭一個簡單的網站。 工具: 後端處理這種自己做的小網站用 Node是最好不過來(其他語言不會。。),選Express跟Koa都可以,這邊我選的是Express
前後端互動方式(同一頁面並行開發、變數傳遞)
剛做完一個專案的改進需求,總結一些專案心得,主要有兩方面: 同一個頁面,前後端各負責幾個模組開發,如何頁面整合? 前端如何從後端獲取資料? 1 前後端按模組開發同一頁面 首先,在這個專案中沒有用到vue、react這些框架,實現頁面的一種做法是前端通
原生JavaScript進行前後端同構
什麼是前後端同構 明確三個概念:「後端渲染」指傳統的 ASP、Java 或 PHP 的渲染機制;「前端渲染」指使用 JS 來渲染頁面大部分內容,代表是現在流行的 SPA 單頁面應用;「同構渲染」指前後端共用 JS,首次渲染時使用 Node.js 來直出 HTML。一般來說同構渲染是介於前