请求方式如下:
$.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
直接表示无限也是不允许的).
上面提到返回是一个字符串时会导致抛出异常,奇怪的是我调试的时候并没有抛出异常。
随机推荐
-
Linux中安装NodeJs 、cnpm 、npm
一.安装NodeJs 切换到 cd /usr/local/src/ 下载nodejs wget https://nodejs.org/dist/v6.9.3/node-v6.9.3-linux-x64 ...
-
各种HTTP状态的含义
在网站建设的实际应用中,容易出现很多小小的失误,就像MySQL当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规http状态码的表现也是一样,Google无法验证网站几种解决办法,提及到由于 ...
-
《C与指针》读后感
到目前为止,我已经读到了<C与指针>第十六章,总共十八章,接下来的章节内容分别是标准函数库.数据结构.以及C语言的运行环境,还没有完全做完练习就写这篇读后感原因有二,第一个当然是最主要的, ...
-
tomcat配置虚拟主机
在眼下,非常多server都是一台server对外能够訪问非常多个javaEE的项目,这样的实现方式就须要在tomcat里面配置虚拟主机了!以下就说说怎样配置虚拟主机: 找到tomcat的安装文件夹, ...
-
githubRepository -- 使用
1. 注册github账号; 2. 配置SSH keys; 点击setting, 配置 SSH keys Generating SSH keys 检查本地的 SSH keys: a> 在用户目录 ...
-
mysq数据库相关操作
(一)常用SQL语句 1.SELECT USER() 得到登陆的用户 2.SELECT VERSION() 得到mysql的版本信息 3.SELECT NOW() 得到当前的时间 4.SELECT D ...
-
chrome 全屏 的两种方式
新建脚本start.bat 自动全屏模式 "C:\Program Files\Google\Chrome\Application\chrome.exe" --kiosk http: ...
-
浅谈SPA
最近一直在学习关于Vue的一些知识,由于遇到了问题,去网上查找资料,收获颇丰,在此分享. 1. 什么是SPA? 单页Web应用(single page web application, SPA),就是 ...
-
005-2-Python文件操作
Python文件操作(file) 文件操作的步骤: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件(操作文件后记住关闭) 1.读写文件的基础语法: open() 将会返回一个 ...
-
HashMap TreeMap的区别
Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复就覆盖了),但允许值重复.Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快 ...