jquery的ajax遇到的问题
来源:互联网 发布:淘宝团扇 编辑:程序博客网 时间:2024/05/17 09:39
关于datatype的问题
前台的代码:
$.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的ajax遇到的问题
- jquery的ajax请求时遇到的ie缓存问题
- jquery,ajax开发中遇到的中文乱码问题
- 使用Jquery进行ajax提交时候遇到的问题
- ssh中jquery发送ajax请求遇到的问题
- jquery ajax 请求时遇到的 session问题
- jquery ajax请求相关遇到的问题记录
- jQuery遇到的问题
- jQuery 遇到的问题
- ajax遇到的一些问题
- 初学$ajax()遇到的问题
- AJAX中遇到的问题
- jquery.validate遇到的问题
- jQuery书写遇到的问题
- 记录IIS7上配置.Net2010的mvc2遇到的jQuery关于ie的Ajax小问题..
- 当使用servlet输出json时,浏览器端jquery的ajax遇到parse error的问题
- jquery的ajax缓存问题
- 关于jQuery.ajax的问题
- Hdu 5586 Sum
- shell 11-29
- 书籍阅读
- 浅谈UNIX下Apache的MPM及httpd.conf配置文件中相关参数配置
- Lua封装创建枚举类型
- jquery的ajax遇到的问题
- Xcode中如何仅替换选中行
- 74 For which two situations would you use functionality provided by the Resource Manager? (Choose tw
- 黑马程序员--关于单例模式的多种写法
- mongodb--c# 插入数据效率
- Something about English learning
- UVa12412 - A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)
- 《Go语言入门》第一个Go语言程序——HelloWorld
- C# ArrayList和Hashtable的使用