讓python bottle框架支持jquery ajax的RESTful風格的PUT和DELETE等請求(新方法)


  通過上篇博文的方法處理后,進入代碼調試后發現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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM