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

  經過上篇博文的方法處理後,進入代碼調試後發現ajax獲取不了服務器端返回的數據,度娘後發現原來AJAX的OPTIONS請求方式是狀態類型查詢,即向服務器提交信息後不返回任何信息,只將執行狀態(200狀態)通知客戶端,也就是說上文的方法沒有用。javascript

  而後使用IE/火狐/谷歌三種瀏覽器進行測試,發現IE上使用jquery ajax能支持delete與put正常提交,而其他兩種都不行,查找了jquery源碼也沒有找到修改位置,因此想來想去只好換一種折中的方式提交。java

 

  上AJAX代碼python

$.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參數,值爲對應的請求方式值jquery

 

  服務器端直接在勾子裏添加下面代碼,改變REQUEST_METHOD的值ajax

@hook('before_request')
def validate():
    """使用勾子處理頁面或接口訪問事件"""
    if request.method == 'POST' and request.POST.get('_method'):
        request.environ['REQUEST_METHOD'] = request.POST.get('_method', '').upper()

 

  從新提交,python服務器端路由就能夠正常接收並返回數據給客戶端了json

@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/學習

相關文章
相關標籤/搜索