jquery的ajax遇到的问题
2015-11-29 17:55
561 查看
关于datatype的问题
前台的代码:
后台代码:
问题描述:
后台返回的数值前台总是接不到,而且总是走到error的函数里面。
解决步骤:
首先通过xmlhttprequest对象打印错误,就是把error函数,修改成下面的方式
出现的结果是 200 4 parsererror
就是XMLHttpRequest.status返回200表示正常返回,没问题XMLHttpRequest.readyState返回4 表示数据解析完成,没问题
而XMLHttpRequest.readyState返回parsererror 表示数据格式不对。此时,检查代码,发现前台代码中
反思问题:对XMLHttpRequest对象的属性不了解
一:datatype
datatype有下面几种类型
•”xml”: 返回 XML 文档,可用 jQuery 处理。
•”html”: 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
•”script”: 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 “cache” 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
•”json”: 返回 JSON 数据 。
•”jsonp”: JSONP 格式。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
•”text”: 返回纯文本字符串
除此之外的类型都是非法的类型。
二:textStatus
HTTP响应的状态代码对应的文本(OK, not found),关于这部分可以参考各类 HTTP 返回状态代码详解
textStatus有四种值: “timeout”, “error”, “notmodified” 和 “parsererror”。
在使用时要注意
data:”{}”, data为空也一定要传”{}”;不然返回的是xml格式的。并提示parsererror.
parsererror的异常和Header 类型也有关系。及编码header(‘Content-type: text/html; charset=utf8’);
parsererror的异常和datatype也有关,本例就是犯了这个错误。
三:readyState
关于readystate五个状态总结如下:
readyState 状态 状态说明
(0)未初始化
此阶段确认XMLHttpRequest对象是否创建,并为调用open()方法进行未初始化作好准备。值为0表示对象已经存在,否则浏览器会报错--对象不存在。
(1)载入
此阶段对XMLHttpRequest对象进行初始化,即调用open()方法,根据参数(method,url,true)完成对象状态的设置。并调用send()方法开始向服务端发送请求。值为1表示正在向服务端发送请求。
(2)载入完成
此阶段接收服务器端的响应数据。但获得的还只是服务端响应的原始数据,并不能直接在客户端使用。值为2表示已经接收完全部响应数据。并为下一阶段对数据解析作好准备。
(3)交互
此阶段解析接收到的服务器端响应数据。即根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取的格式,为在客户端调用作好准备。状态3表示正在解析数据。
(4)完成
此阶段确认全部数据都已经解析为客户端可用的格式,解析已经完成。值为4表示数据解析完毕,可以通过XMLHttpRequest对象的相应属性取得数据。
概而括之,整个XMLHttpRequest对象的生命周期应该包含如下阶段:
创建-初始化请求-发送请求-接收数据-解析数据-完成
本文中的问题也可以参照一下博客得到解决:ajax error status状态说明
前台的代码:
$.ajax({ async : false, cache : false, type: 'POST', dataType : "String", url:'<%=path%>/costmanageController/save.do', data:{ mount : _a, date : _b, }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); }, success:function(data){ //请求成功后处理函数。 if(data=="ok"){ $.messager.alert('注意', '记账成功', 'info'); } } });
后台代码:
String pay_mount =request.getParameter("mount"); String time = request.getParameter("date"); paymentsDayBean bean = new paymentsDayBean(); bean.setPay_mount(Double.parseDouble(pay_mount)); bean.setTime(time); pdd.AddPayments(bean); PrintWriter writer = response.getWriter(); writer.write("ok"); writer.flush(); writer.close();
问题描述:
后台返回的数值前台总是接不到,而且总是走到error的函数里面。
解决步骤:
首先通过xmlhttprequest对象打印错误,就是把error函数,修改成下面的方式
error: function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); },
出现的结果是 200 4 parsererror
就是XMLHttpRequest.status返回200表示正常返回,没问题XMLHttpRequest.readyState返回4 表示数据解析完成,没问题
而XMLHttpRequest.readyState返回parsererror 表示数据格式不对。此时,检查代码,发现前台代码中
dataType : "String",有问题,所以改为
dataType : "text",就可以了。
反思问题:对XMLHttpRequest对象的属性不了解
一:datatype
datatype有下面几种类型
•”xml”: 返回 XML 文档,可用 jQuery 处理。
•”html”: 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
•”script”: 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 “cache” 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
•”json”: 返回 JSON 数据 。
•”jsonp”: JSONP 格式。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
•”text”: 返回纯文本字符串
除此之外的类型都是非法的类型。
二:textStatus
HTTP响应的状态代码对应的文本(OK, not found),关于这部分可以参考各类 HTTP 返回状态代码详解
textStatus有四种值: “timeout”, “error”, “notmodified” 和 “parsererror”。
在使用时要注意
data:”{}”, data为空也一定要传”{}”;不然返回的是xml格式的。并提示parsererror.
parsererror的异常和Header 类型也有关系。及编码header(‘Content-type: text/html; charset=utf8’);
parsererror的异常和datatype也有关,本例就是犯了这个错误。
三:readyState
关于readystate五个状态总结如下:
readyState 状态 状态说明
(0)未初始化
此阶段确认XMLHttpRequest对象是否创建,并为调用open()方法进行未初始化作好准备。值为0表示对象已经存在,否则浏览器会报错--对象不存在。
(1)载入
此阶段对XMLHttpRequest对象进行初始化,即调用open()方法,根据参数(method,url,true)完成对象状态的设置。并调用send()方法开始向服务端发送请求。值为1表示正在向服务端发送请求。
(2)载入完成
此阶段接收服务器端的响应数据。但获得的还只是服务端响应的原始数据,并不能直接在客户端使用。值为2表示已经接收完全部响应数据。并为下一阶段对数据解析作好准备。
(3)交互
此阶段解析接收到的服务器端响应数据。即根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取的格式,为在客户端调用作好准备。状态3表示正在解析数据。
(4)完成
此阶段确认全部数据都已经解析为客户端可用的格式,解析已经完成。值为4表示数据解析完毕,可以通过XMLHttpRequest对象的相应属性取得数据。
概而括之,整个XMLHttpRequest对象的生命周期应该包含如下阶段:
创建-初始化请求-发送请求-接收数据-解析数据-完成
本文中的问题也可以参照一下博客得到解决:ajax error status状态说明
相关文章推荐
- JQuery上传插件Uploadify
- jQuery+Ajax+PHP实现异步分页数据显示
- jquery.easing.js的使用示例
- 用jquery循环map
- jquery图片查看插件,支持旋转、放大、缩小、拖拽、缩略图(仿qq图片查看)
- jquery的选项卡事件
- jquery 选择器
- jQuery插件EasyUI校验规则 validatebox验证框
- 实例解析jQuery插件EasyUI最常用的表单验证规则
- jQuery 循环 绑定事件 问题记录
- jquery实现抽奖系统
- jquery 使用 jquery-migrate-1.2.1 判断浏览器型号及版本信息
- jQuery动画animate和scrollTop结合使用
- 学习--jquery 自定义插件 页面按照模块 垂直滚动
- 学习--jquery 记录 使用js判断滚轮滚动方向
- jquery-easyui中表格的行编辑功能
- 分享我的jquery实现下拉菜单心的
- jquery+php实现滚动的数字特效
- MVC Ajax Helper或Jquery异步加载部分视图
- jQuery的i18n插件的一个限制