请求方式如下:

$.xpost = function (url, data) {
return $.ajax({
url: url,
type: "POST",
dataType: "json",
contentType: "application/json",
data: JSON.stringify(data)
});
};

在service中调用请求

class Service {

        //保存订单
saveOrder(order){
let url = config.rootUrl +'/order/main/saves';
return $.xpost(url, JSON.stringify(order));
} } let service = new Service();

在view中调用service里面的savaOrder方法

            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里面的回调方法。

查询jQuery api,看到里面的解释:

dataType (default: Intelligent Guess (xml, json, script, or html))

Type: String
从服务器返回你期望的数据类型。 如果没有指定,jQuery将尝试通过MIME类型的响应信息来智能判断(一个XML MIME类型就被识别为XML,在1.4中 JSON将生成一个JavaScript对象,在1.4中 script 将执行该脚本,其他任何类型会返回一个字符串)。 可用的类型(以及结果作为第一个参数传递给成功回调函数)有:

  • "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键值对。再一试,发现可以进入回调函数了。

Data Types(数据类型)

$.ajax()调用不同类型的响应,被传递到成功处理函数之前,会经过不同种类的预处理。 预处理的类型取决于由更加接近默认的Content-Type响应,但可以明确使用dataType选项进行设置。如果提供了dataType选项, 响应的Content-Type头信息将被忽略。

有效的数据类型是text, html, xml, jsonjsonp,和 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直接表示无限也是不允许的).

上面提到返回是一个字符串时会导致抛出异常,奇怪的是我调试的时候并没有抛出异常。

随机推荐

  1. theme为dialog的Activity如何充满全屏

     转自:http://blog.csdn.net/fzh0803/article/details/9787615 分类: android_点滴记录2013-08-06 10:33 2005人阅读 评论 ...

  2. 知识点查缺补漏贴03:单机最大进程数,线程数和Socket连接数

    前言: 参加Unix/Linux相关高级研发职位时,是否经常会被文档,单机允许最大进程数.线程数和Socket连接数,而你却感到束手无措呢?本文给你一个最为详细的答案. 一.最大进程数 运行Linux ...

  3. 查看selenium api的方法

    首先打开命令行,在doc窗口输入: python -m pydoc -p 4567简单解释一下: python -m pydoc表示打开pydoc模块,pydoc是查看python文档的首选工具:-p ...

  4. git 未能顺利结束 (退出码 1)

    Please make sure you have the correct access rightsand the repository exists.

  5. java UTC时间和local时间相互转换

    java UTC时间和local时间相互转换 1.local时间转UTC时间 /** * local时间转换成UTC时间 * @param localTime * @return */ public ...

  6. CorelDRAW X4常用快捷键大全

    材料/工具 CorelDRAW X4 方法 1 F1:帮助信息 F2:缩小 F3:放大 F4:缩放到将所有对象置于窗口中 F5:手绘(Freehand)工具 F6:矩形(Rectangle)工具 F7 ...

  7. 【Python编程:从入门到实践】chapter9 类

    chapter9 类 9.1 创建和使用类 9.1.1 创建Dog类 class Dog(): """一次模拟小狗的简单尝试""" def ...

  8. OpenGL 多线程共享纹理

    1:opengl 多线程共享纹理纹理: //解码时候使用opengl进行绘制,需要构建队列和两个线程,分别用于解码数据并且填充纹理和渲染. 主线程常见两个共享上下文: main() { ⋯⋯⋯⋯ gH ...

  9. 批处理框架-spring Batch

    并发处理业务 数据量大,并发度高,要支持事物,回滚,并发机制.事务.并发.监控.执行等,并不提供相应的调度功能.因此,如果我们希望批处理任务定期执行,可结合 Quartz 等成熟的调度框架实现. 业务 ...

  10. django的forms

    base知识 参考博文:https://www.cnblogs.com/yuanchenqi/articles/9036474.html 用户表单是Web端的一项基本功能,大而全的Django框架中自 ...