請求方式以下:javascript
$.xpost = function (url, data) { return $.ajax({ url: url, type: "POST", dataType: "json", contentType: "application/json", data: JSON.stringify(data) }); };
在service中調用請求css
class Service { //保存訂單 saveOrder(order){ let url = config.rootUrl +'/order/main/saves'; return $.xpost(url, JSON.stringify(order)); } } let service = new Service();
在view中調用service裏面的savaOrder方法html
service.saveOrder(order).then((result)=>{ if(result.status == 1){ $("#cashPayBox").modal('hide'); if(order.status == 12){ //支付完成,當前單據完結 //流水號遞增1 this.baseInfo.serialNo += 1; $(".cashier").databind(this.baseInfo); //清空面板關於掛起訂單的信息 this.page.clearOrderInfo(); this.page.order = {}; this.page.item = {}; }else{ service.getOrder(orderNo).then((orderInfo)=>{ $.tryInvoke(this.setCurrentOrder,this,orderInfo); //更新支付金額區域顯示金額 this.changePayAmount(0.00,amount,payway) }); } }else{ } });
向服務器發送請求,請求正確返回,狀態是200,沒看到報錯。可是就是不執行後面then裏面的回調方法。java
查詢jQuery api,看到裏面的解釋:python
dataType (default: Intelligent Guess (xml, json, script, or html)
)ajax
"xml"
: 返回 XML 文檔,能夠經過 jQuery 處理。"html"
: 返回純文本 HTML 文本;包含的script標籤會在插入DOM時執行。"script"
: 把響應的結果看成 JavaScript 執行,並將其看成純文本返回。默認狀況下會經過在URL中附加查詢字符串變量 ,_=[TIMESTAMP]
, 禁用緩存結果,除非設置了cache
參數爲true
。注意: 在遠程請求時(不在同一個域下),全部POST請求都將轉爲GET請求。(愚人碼頭注:由於將使用DOM的script標籤來加載)"json"
:把響應的結果看成 JSON 執行,並返回一個JavaScript對象。跨域"json"
請求轉換爲"jsonp"
,除非該請求在其請求選項中設置了jsonp:false
。JSON 數據以嚴格的方式解析; 任何畸形的JSON將被拒絕,而且拋出解析錯誤信息。在jQuery1.9中,一個空響應也將被拒絕;服務器應該返回null
或 {}
響應代替。(見json.org的更多信息,正確的JSON格式。)"jsonp"
: 以 JSONP 的方式載入 JSON 數據塊。會自動在所請求的URL最後添加"?callback=?"
。默認狀況下會經過在URL中附加查詢字符串變量 ,_=[TIMESTAMP]
, 禁用緩存結果,除非設置了cache
參數爲true
。"text"
: 返回純文本字符串。個人ajax請求裏面的dataType設置的是json,查看後臺返回的是一個String,估計問題應該出在這裏。把後臺返回改爲了Map鍵值對。再一試,發現能夠進入回調函數了。json
$.ajax()
調用不一樣類型的響應,被傳遞到成功處理函數以前,會通過不一樣種類的預處理。 預處理的類型取決於由更加接近默認的Content-Type響應,但能夠明確使用dataType
選項進行設置。若是提供了dataType
選項, 響應的Content-Type頭信息將被忽略。api
有效的數據類型是text
, html
, xml
, json
,jsonp
,和 script
.跨域
若是指定的是text
或 html
, 則不會預處理。 這些數據被簡單地傳遞給成功處理函數, 並經過該jqXHR
對象的responseText
屬性得到的。緩存
若是指定的是xml
, 響應結果做爲XMLDocument
,在傳遞給成功處理函數以前使用jQuery.parseXML
進行解析。 XML文檔是能夠經過該jqXHR
對象的responseXML
屬性得到的。
若是指定的是json
,響應結果做爲一個對象,在傳遞給成功處理函數以前使用jQuery.parseJSON
進行解析。 解析後的JSON對象能夠經過該jqXHR
對象的responseJSON
屬性得到的。
查看jQuery.parseJSON( json )的解釋:
傳入格式有誤的 JSON 字符串可能致使拋出異常。例如,下面這些無效的 JSON 字符串:
{test: 1}
(test 沒有使用雙引號包裹).{'test': 1}
('test' 用了單引號而不是雙引號包裹)."{test: 1}"
(test 沒有使用雙引號包裹)."{'test': 1}"
('test' 用了單引號而不是雙引號包裹)."'test'"
('test' 用單引號代替雙引號).".1"
(number 必須以數字開頭; "0.1"
將是有效的)."undefined"
(undefined
不能表示一個 JSON 字符串; 然而null
,能夠)."NaN"
(NaN
不能表示一個 JSON 字符串; 用Infinity
直接表示無限也是不容許的).上面提到返回是一個字符串時會致使拋出異常,奇怪的是我調試的時候並無拋出異常。