最近在做一个ajax请求的时候,再次碰到了ajax请求返回的状态码是200但是没有进入到success:function(){}分支中去。 有些不解
其后台代码如下:
public void queryMenu(){
String areaId = request.getParameter("areaId");
HtmlAreaBean bean=htmlProxy.getHtmlAreaInfoById(areaId);
try {
PrintWriter out= response.getWriter();
out.write(bean.getContent());
out.flush();
out.close();
} catch (IOException e) {
LOG.error(e.getMessage(), e);
}
}
其前台代码如下:
function add_menu(classname, lang, obj){
var param= '{"areaId":"'+menulist[classname]+lang+'"}';
$.ajax({
type: "POST",
url: "Index!queryMenu",
cache: true,
data: $.parseJSON(param),
dataType: "json",
async: false,
success: function(data) {
jQuery(obj).find('.menuitempanel').html(data);
},
error:function(XMLHttpRequest, textStatus, errorThrown){
alert(textStatus+" "+errorThrown);
}
});
}
对于JS通过FF的firebug发现控制台中出现了一个错误提示:unexpected characters. 返回的数据不是严格的json 格式,
此时就想到了查看Java代码发现bean.getcontent()获取的Html内容中在传送到前台时,数据不是严格的Json数据导致问题
产生。
解决方案有两种:
(1) 让ajax数据返回类型为text而不是json;即dataType: "text";
(2) 在java代码侧将返回的数据"data"转成标准的Json格式即可;修改如下 out.write(JSONUtil.toString(bean.getContent()));
分享到:
相关推荐
1.情况描述:ajax发送成功,后台也成功响应请求,并返回了json数据,通过chrome监听请求也可以看到响应的json数据,但是就是不进success方法,反而跑到error方法中了 前端: $.ajax({ type : get, data : {'dbId'...
jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Object.success,但后台能够返回数据,原代码如下: var source=[]; $.ajax({ ...
今天在使用 ajax 向后台请求数据时出现错误,提示状态码为 0 ,后台采用的是 spring mvc 架构。 状态码为0是什么意思呢?查找了下,原来它意味着 (未初始化)即没有调用到send()方法,我原来代码如下 : $.ajax...
今天在做个demo的时候,发现ajax获取状态为200,可是却没有执行正确的方法。 SpringMVC + ajax +jquery 后来发现SpringMVC利用注解@ResponseBody返回String时,浏览器显示200状态码,... 您可能感兴趣的文章:Ajax请求发
今天小编就为大家分享一篇解决ajax请求后台,有时收不到返回值的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
$("#msg").ajaxSuccess(function(evt, request, settings){ $(this).append("<li>Successful Request!</li>"); }); jQuery.ajax(options) 通过 HTTP 请求加载远程数据。 jQuery 底层 AJAX 实现。简单易用的高层...
比如.ajaxComplete()——请求完成时.ajaxError()——请求失败时.ajaxSend()——在Ajax请求发送时附加一个function去执行.ajaxStart()——请求开始时,.ajaxStop()——请求结束时.ajaxSuccess()——请求成功时.load()...
ajax的代码,用的是jquery的 ajax: $.ajax({ ... type: post, //请求方式是post ... success: function (data) { //成功时返回的data值,注意这个data是后台返回的值,上面的data是你要传给后台的值 co
比如.ajaxComplete()——请求完成时.ajaxError()——请求失败时.ajaxSend()——在Ajax请求发送时附加一个function去执行.ajaxStart()——请求开始时,.ajaxStop()——请求结束时.ajaxSuccess()——请求成功时.load()...
本文实例讲述了js与jQuery终止正在发送的ajax请求的方法。分享给大家供大家参考,具体如下: 核心:调用XMLHttpRequest对象上的abort方法 jquery的ajax方法有自己的超时时间设置参数: $.ajax({type:'POST', url:'...
自己学习jquery的ajax的经历,记录一下 ajaxTestDemo.html 在body里面放一个id为test的div <div id=test></div> 第一步还是要先加载jquery文件 jquery.min.js [removed] $(function(){ $.ajax({ //请求方式为...
首先,Ajax请求数据,(用的是Jquery的Ajax) 代码如下: [removed] $(function(){ $(‘#test’).click(function(){ $.ajax({ url:’__APP__/Article/jsonTest’, type:’post’, success:function(data){ var item;...
jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发送设置的datatype设置为jsonp格式数据或json格式都可以。 代码示例如下: 代码如下: $(‘#send’).click...
简单的说Ajax请求通过XMLHttpRequest对象发送请求,该对象有四个状态(readyState): 0-未初始化、1-正在初始化、2-发送数据、3-正在发送数据、4-完成。 当XMLHttpRequest.readyState为4时,表示ajax请求已经完成...
一般我们在开发中经常会用到Ajax请求,异步发送请求,然后获取我们想要的数据,在Ajax中使用Get请求数据不会有页面缓存的问题,而使用POST请求可是有时候页面会缓存我们提交的信息,导致我们发送的异步请求不能正确...
ajax请求方法如下 一、普通的ajax,async即同步异步处理,success之后,会有data返回值,status请求状态,xhr封装的是请求头,但要注意是的是,并不是所有的请求头信息都能获取到的,比如center-l
项目中需要用到ajax来进行数据的请求,于是三下五除二的将ajax代码拷贝到项目中,前端,后台数据处理完毕,测试(心想可以休息下下了),谁知数据成功返回、前端没报错,后台也没错,硬是没有执行success回调函数,...
前端小同学在做页面的时候,犯了个常见的错误:把多个Ajax请求顺序着写下来了,而后面的请求,对前面请求的返回结果,是有依赖的。如下面的代码所示: var someData; $.ajax({ url: '/prefix/entity1/action1', ...
废话不多说了,先给大家贴一段代码看看吧, $.ajax({ type: "post", url: url, dataType:'html', success: function(data) { }, complete: function(XMLHttpRequest, textStatus) { }, error: function(){} }...
Jquery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false就可以了 于时我在ajax中进行了处理 async: false,结果发现提交正常的数据返回是正常的没有错误。 ...