通過上篇博文的方法處理后,進入代碼調試后發現ajax獲取不了服務器端返回的數據,度娘后發現原來AJAX的OPTIONS請求方式是狀態類型查詢,即向服務器提交信息后不返回任何信息,只將執行狀態(200狀態)通知客戶端,也就是說上文的方法沒有用。
然后使用IE/火狐/谷歌三種瀏覽器進行測試,發現IE上使用jquery ajax能支持delete與put正常提交,而其余兩種都不行,查找了jquery源碼也沒有找到修改位置,所以想來想去只好換一種折中的方式提交。
上AJAX代碼
$.ajax({ type: 'POST', url: 'http://127.0.0.1/system/menu_info/1/', data: {'_method': 'delete' }, dataType: 'json', success: function (data) { //return } });
使用DELETE與PUT提交時,javascript ajax中繼續使用POST請求,然后請求參數中增加_method參數,值為對應的請求方式值
服務器端直接在勾子里添加下面代碼,改變REQUEST_METHOD的值
@hook('before_request') def validate(): """使用勾子處理頁面或接口訪問事件""" if request.method == 'POST' and request.POST.get('_method'): request.environ['REQUEST_METHOD'] = request.POST.get('_method', '').upper()
重新提交,python服務器端路由就可以正常接收並返回數據給客戶端了
@delete('/system/menu_info/<id:int>/') def callback(id): """ 刪除指定記錄 """ # 業務代碼 return {'state':1, 'msg': 'ok'}
版權聲明:
本文由AllEmpty原創並發布於博客園,版權與博客園共同所有,歡迎轉載,未經本人同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。如有問題,可以通過1654937@qq.com 聯系我,非常感謝。
發表本編內容,主要是為了和大家共同學習共同進步,有興趣的朋友可以加加Q群:669058475,大家一起探討。
更多內容,敬請觀注博客:http://www.cnblogs.com/EmptyFS/