最近在做一个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请求返回状态码200,表示请求成功,但预期的`success`回调函数并未被调用。这个问题通常会让开发者感到困惑,因为从HTTP状态码来看,一切似乎都正常。本文将深入探讨这个...
Ajax,即Asynchronous JavaScript and XML,允许我们在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容,提供更流畅的用户体验。 在“jQuery-ajax-用户名异步请求”这个场景中,我们可能是在设计一个...
这样,`processData`函数就能访问到Ajax请求返回的数据。 4. **全局变量**: 另一种方式是通过全局变量来共享数据。虽然这不是最佳实践,但在某些情况下可能有用: ```javascript var globalData; $.ajax({ ...
3. 在前端处理返回的JSON数据:在$.ajax()方法的success回调函数中,返回的数据会被处理。这里使用了eval()函数来转换字符串形式的JSON数据为JavaScript对象。然而,在实际开发中,出于安全考虑,不建议使用eval()...
本示例"Jquery跨域Ajax请求测试"将详细讲解如何利用jQuery实现这一功能。 首先,了解同源策略是理解跨域问题的关键。同源策略是浏览器为了保障用户安全而设定的一项机制,它规定了只有来自同一协议、同一域名和同一...
通常,当我们发送一个Ajax请求时,我们关注的是成功的200状态码或者错误状态码如404或500。但在需要用户登录的场景下,服务器可能会返回一个非200的状态码,比如401(未经授权)或403(禁止访问)。这时,我们可以...
本示例旨在帮助开发者调试针对Ajax请求的后台接口,确保它们能够正确处理跨域请求、支持Ajax方式并且能返回预期的数据。 首先,我们需要理解什么是跨域问题。由于浏览器的安全策略,同一源策略限制了JavaScript只能...
以上就是使用jQuery实现动态增加行并发送Ajax请求的基本流程。在实际应用中,你可能需要根据项目需求进行适当的调整,例如添加数据验证、错误提示等功能。此外,`dynamicAddRow.zip`文件可能包含了一个示例项目,你...
在Thymeleaf中构建可靠的Ajax请求URL是Web开发中的一个重要环节,特别是在使用Spring Boot和其他MVC框架时。Thymeleaf是一个强大的服务器端模板引擎,它可以与Ajax结合使用,提供动态更新页面的能力,而无需刷新整个...
在上述代码中,如果服务器在4秒内没有返回响应,那么error回调函数会被触发,并且可以在此函数中再次发起Ajax请求,或者进行其他的错误处理操作。这种处理方式特别适合于需要周期性检查服务状态的场景,如轮询某个...
今天在使用 ajax 向后台请求数据时出现错误,提示状态码为 0 ,后台采用的是 spring mvc 架构。 状态码为0是什么意思呢?查找了下,原来它意味着 (未初始化)即没有调用到send()方法,我原来代码如下 : $.ajax...
在JavaScript中,通常使用XMLHttpRequest对象来创建Ajax请求。以下是一个简单的Ajax请求示例: ```javascript var xhr = new XMLHttpRequest(); xhr.open('GET', 'data.json', true); // GET请求,替换为'data.json...
在AJAX请求中,后端服务通常会返回一个状态码,例如SuccessCode,客户端需要根据这个状态码来验证请求是否成功,并执行相应的逻辑处理。这能够确保客户端根据服务器的响应做出正确的操作,例如提示用户操作成功、...
总结来说,这个jQuery+AJAX的实例展示了如何利用jQuery的$.ajax方法进行异步数据请求,包括设置请求参数、处理返回数据和异常情况。在实际开发中,我们需要根据项目需求灵活运用这些技巧,以实现高效、友好的前端...
### AJAX请求基础知识与示例解析 #### 一、AJAX技术概述 AJAX(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。这意味着...
### Ajax请求详解 #### 一、简单的Ajax请求 Ajax(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新,这意味着可以在不重新...