读书人

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

发布时间: 2012-10-27 10:42:26 作者: rapoo

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

热点推荐