工做有一段時間了,總結一下和後臺交互遇到的問題。javascript
$.ajax({ type:"POST", async : false, url:"../../gzq/circle/deleteTeam", dataType:"json", contentType:"application/json; charset=utf-8", data:JSON.stringify(c), success:function(data){ console.log(data); }, error:function(error){ console.log(error); } });
緣由:事實上,假如不用JSON.stringify(data), 會變成字符串拼接,'name=vinxent&age=21',有點和get方法相像。若使用JSON.stringify(data),則會傳輸json對象--「{name;'vinxent', age:21}」
因此,在通常場景來講,get方法無需JSON.stringify,post方法須要。java
.service('findXfzzShopInfo', ['$http', '$q', function($http, $q) { this.get = function(shopClassId, val) { var def = $q.defer(); $http({ url: '../../shop/findXfzzShopInfo?shopClassId=' + shopClassId + '&val=' + val, method: 'GET', cache: true }).then(function(resp) { def.resolve(resp.data); }).catch(function(err) { def.reject(err.data); }); return def.promise; }; }])
因爲要進行環境的判斷,將請求封裝爲服務,使用了$q的defer延時加載。jquery
當請求內容長時間沒有變化時,咱們能夠使用這個配置來緩存請求,減小服務器的壓力,提升頁面的速度,當頁面關閉的時候能夠清空這個緩存。並且cahe後面也能夠配置時間。ajax
這裏要講的不是配置responseType,而是我在get請求的時候後臺返回一個列表,當有值的時候你會發現徹底沒有問題,沒有值得時候後臺就什麼都沒返回,而你的responseType是json,這時候就進去了失敗的函數,因此仍是後臺坑了你,和後臺商量下空的時候也返回你一個對象就能夠了。json