`
wkf41068
  • 浏览: 458395 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ajax 请求返回200 但是不进success--1

阅读更多
当前出现一问题就是我的Ajax请求返回的值有些牟盾,我在firefox 中跟踪调试的时候发现ajax请求服务器,返回结果是正常,状态码是200, 但是程序就是不进如到success方法体中,我的Ajax请求如下:

	//发送异步请求改变相应服务器的日志级别。
		function changeLogLevel(url){
				$.ajax({
				url : url,
				async : true,
				dataType:"jsonp",
				jsonp:"callbackfun",
				success : function(data) {
					var res = data.content;
					if(res == "234"){
						alert("日志级别更新失败");
					}else if(res == "246"){
						alert("日志级别更新成功");
					}
				},
				error : function(XMLHttpRequest,textStatus,errorthrow){
					alert("XMLHttpRequest.status="+XMLHttpRequest.status);

				},
				complete: function(data,status){
					alert("data=="+data);
					
				} 
			
			});
		}


请求的页面资源如下:
<%@ page import="*.cbb.log.service.ILogConfig"%>
<%@ page import="*.cbb.log.service.impl.LogConfigImpl"%>
<%
String toChangeLevel = request.getParameter("to");
ILogConfig logConImpl = new LogConfigImpl();
boolean flag = logConImpl.updateLevel(toChangeLevel);
if(flag){
	out.write("success");
}else{
	out.write("fail");
}
%>



经过查找资料,发现不光客户端需要采用jsonp 方式请求资源,同时请求的服务端返回的值必须做相应的处理,上面的例子中换成如下方式即可:

<%@ page import="*.cbb.log.service.ILogConfig"%>
<%@ page import="*.cbb.log.service.impl.LogConfigImpl"%>
<%
String toChangeLevel = request.getParameter("to");
String callback = request.getParameter("callbackfun");
ILogConfig logConImpl = new LogConfigImpl();
boolean flag = logConImpl.updateLevel(toChangeLevel);
if(flag){
	out.write(callback+"({content:'success'})");
}else{
	out.write(callback+"({content:'fail'})");
}
%>


简单的ajax 跨域请求必须关注两点:
1. 客户端发送请求时dataType 必须是jsonp的方式。
2.服务器端返回值必须符合一些规范,即在请求中获取回调函数,将回调函数和json形式结果组合在一起才能完成。
  注意如果客户端ajax中没有写jsonp: callbackfun 的话,在服务端就以如下的方式获取客户端的回调函数:
  request.getParameter("callback");
分享到:
评论

相关推荐

    Ajax请求发送成功但不进success的解决方法

    1.情况描述:ajax发送成功,后台也成功响应请求,并返回了json数据,通过chrome监听请求也可以看到响应的json数据,但是就是不进success方法,反而跑到error方法中了 前端: $.ajax({ type : get, data : {'dbId'...

    jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法

    jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Object.success,但后台能够返回数据,原代码如下: var source=[]; $.ajax({ ...

    解决AJAX返回状态200没有调用success的问题

    然而,有时候我们可能会遇到一种情况,即AJAX请求返回状态码200,表示请求成功,但预期的`success`回调函数并未被调用。这个问题通常会让开发者感到困惑,因为从HTTP状态码来看,一切似乎都正常。本文将深入探讨这个...

    jQuery-ajax-用户名异步请求

    Ajax,即Asynchronous JavaScript and XML,允许我们在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容,提供更流畅的用户体验。 在“jQuery-ajax-用户名异步请求”这个场景中,我们可能是在设计一个...

    在外部方法使用Ajax请求返回的数据

    这样,`processData`函数就能访问到Ajax请求返回的数据。 4. **全局变量**: 另一种方式是通过全局变量来共享数据。虽然这不是最佳实践,但在某些情况下可能有用: ```javascript var globalData; $.ajax({ ...

    jQuery中ajax请求后台返回json数据并渲染HTML的方法

    jQuery中的AJAX请求是一种非常常见的前端异步数据交互方式,它的作用是使得页面无需重新加载即可向服务器请求数据,并将数据动态地加载到页面中。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它...

    Jquery跨域Ajax请求测试

    本示例"Jquery跨域Ajax请求测试"将详细讲解如何利用jQuery实现这一功能。 首先,了解同源策略是理解跨域问题的关键。同源策略是浏览器为了保障用户安全而设定的一项机制,它规定了只有来自同一协议、同一域名和同一...

    ajax重写方法搭配后台filter返回status实现ajax请求跳转登录页面

    通常,当我们发送一个Ajax请求时,我们关注的是成功的200状态码或者错误状态码如404或500。但在需要用户登录的场景下,服务器可能会返回一个非200的状态码,比如401(未经授权)或403(禁止访问)。这时,我们可以...

    浏览器调试ajax请求

    本示例旨在帮助开发者调试针对Ajax请求的后台接口,确保它们能够正确处理跨域请求、支持Ajax方式并且能返回预期的数据。 首先,我们需要理解什么是跨域问题。由于浏览器的安全策略,同一源策略限制了JavaScript只能...

    jQuery实现动态增加行,发送Ajax请求返回HTML

    以上就是使用jQuery实现动态增加行并发送Ajax请求的基本流程。在实际应用中,你可能需要根据项目需求进行适当的调整,例如添加数据验证、错误提示等功能。此外,`dynamicAddRow.zip`文件可能包含了一个示例项目,你...

    如何在Thymeleaf中实现ajax请求url的可靠构造

    在Thymeleaf中构建可靠的Ajax请求URL是Web开发中的一个重要环节,特别是在使用Spring Boot和其他MVC框架时。Thymeleaf是一个强大的服务器端模板引擎,它可以与Ajax结合使用,提供动态更新页面的能力,而无需刷新整个...

    为jquery的ajax请求添加超时timeout时间的操作方法

    在上述代码中,如果服务器在4秒内没有返回响应,那么error回调函数会被触发,并且可以在此函数中再次发起Ajax请求,或者进行其他的错误处理操作。这种处理方式特别适合于需要周期性检查服务状态的场景,如轮询某个...

    快速解决ajax请求出错状态码为0的问题

    今天在使用 ajax 向后台请求数据时出现错误,提示状态码为 0 ,后台采用的是 spring mvc 架构。 状态码为0是什么意思呢?查找了下,原来它意味着 (未初始化)即没有调用到send()方法,我原来代码如下 : $.ajax...

    ThinkPHP的success并不跳转页面,而是直接输出json字符串的原因.zip解决ThinkPHP的success并不跳转页面,而是直接输出json字符

    总的来说,ThinkPHP的`success`方法不跳转页面而是输出JSON字符串,是因为它被设计用来处理API和AJAX请求,而这些请求通常需要返回可解析的数据,而不是执行页面重定向。理解和调整你的请求类型以及控制器的响应机制...

    Ajax异步请求的验证

    在JavaScript中,通常使用XMLHttpRequest对象来创建Ajax请求。以下是一个简单的Ajax请求示例: ```javascript var xhr = new XMLHttpRequest(); xhr.open('GET', 'data.json', true); // GET请求,替换为'data.json...

    一个完整的jquery+ajax传送请求的实例

    总结来说,这个jQuery+AJAX的实例展示了如何利用jQuery的$.ajax方法进行异步数据请求,包括设置请求参数、处理返回数据和异常情况。在实际开发中,我们需要根据项目需求灵活运用这些技巧,以实现高效、友好的前端...

    ajax请求数据

    在处理Ajax请求时,我们还需要关注状态码(status code),例如200表示成功,404表示未找到资源,500表示服务器内部错误等。同时,对于可能出现的错误,应通过error回调函数进行处理。 在实际项目中,Ajax常用于...

    ajax请求后台接口数据与返回值处理js的实例讲解

    在AJAX请求中,后端服务通常会返回一个状态码,例如SuccessCode,客户端需要根据这个状态码来验证请求是否成功,并执行相应的逻辑处理。这能够确保客户端根据服务器的响应做出正确的操作,例如提示用户操作成功、...

Global site tag (gtag.js) - Google Analytics