$.ajax dataType设置为json 回调函数不执行
请求方式如下:
$.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))
"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, 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直接表示无限也是不允许的).
上面提到返回是一个字符串时会导致抛出异常,奇怪的是我调试的时候并没有抛出异常。
随机推荐
- 在启动Windows Process Activation Service时,出现错误13:数据无效
在启动Windows Process Activation Service时,出现错误13:数据无效 1.错误原因: 当Windows Process Activation Service从C:\Wi ...
- Oracle查看及修改Oracle最大连接数
Oracle查看及修改Oracle最大连接数 .查询oracle的最大连接数: select * from v$parameter where name='processes'; .oracle 11 ...
- C#操作VFP的dbf数据库文件实例
C#操作VFP的dbf数据库文件实例 新一篇: js获取网站跟路径 实例中分别使用Oledb和Odbc操作vfp数据库dbf文件,操作包括:读取,增删改. 已测试可直接使用,使用方法:下面代码分两个部 ...
- 实际用户ID和有效用户ID (一) *****
在Unix进程中涉及多个用户ID和用户组ID,包括如下: 1.实际用户ID和实际用户组ID:标识我是谁.也就是登录用户的uid和gid,比如我的Linux以simon登录,在Linux运行的所有的命令 ...
- bzoj 3978: [WF2012]Fibonacci Words
Description 斐波那契01字符串的定义如下 F(n) = { 0 if n = 0 1 if n = 1 F(n-1)+F(n-2) if n >= 2 } 这里+的定义是字符串的 ...
- java DateUtils
package demoone; import java.sql.Timestamp; import java.text.ParseException; import java.text.Simple ...
- gc之六--Minor GC、Major GC、Full GC以及Mixed GC之间的区别
目录: GC之一--GC 的算法分析.垃圾收集器.内存分配策略介绍 GC之二--GC日志分析(jdk1.8)整理中 GC之三--GC 触发Full GC执行的情况及应对策略 gc之四--Minor G ...
- MySQL concat用法举例
concat配合information_schema的应用 1 concat的一般用法主要是用于拼接 示例: 执行语句 SELECT CONCAT('M','y','S','Q','L') 可以 ...
- convolution-卷积神经网络
训练mnist数据集 结构组成: input_image --> convolution1 --> pool1 --> convolution2 --> pool2 --> ...
- 粗解python的@classmethod和@staticmethod及普通实例方法
引言: 使用不同的函数定义方法,可以使得函数定义更加有效而且易于维护 本文为博主原创,根据本人自己的理解整理而成,若有不准确的地方,希望能留言告知以免误导他人: 首先进一段代码,来直观感受一下不同类型 ...