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");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值