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

来源:互联网 发布:100本网络禁书下载 编辑:程序博客网 时间:2024/05/24 23:15

ajax请求200JSPajax跨域 

Java代码  

  1. 当前出现一问题就是我的Ajax请求返回的值有些牟盾,我在firefox 中跟踪调试的时候发现ajax请求服务器,返回结果是正常,状态码是200, 但是程序就是不进如到success方法体中,我的Ajax请求如下:  
  2.   
  3.     //发送异步请求改变相应服务器的日志级别。  
  4.         function changeLogLevel(url){  
  5.                 $.ajax({  
  6.                 url : url,  
  7.                 async : true,  
  8.                 dataType:"jsonp",  
  9.                 jsonp:"callbackfun",  
  10.                 success : function(data) {  
  11.                     var res = data.content;  
  12.                     if(res == "234"){  
  13.                         alert("日志级别更新失败");  
  14.                     }else if(res == "246"){  
  15.                         alert("日志级别更新成功");  
  16.                     }  
  17.                 },  
  18.                 error : function(XMLHttpRequest,textStatus,errorthrow){  
  19.                     alert("XMLHttpRequest.status="+XMLHttpRequest.status);  
  20.   
  21.                 },  
  22.                 complete: function(data,status){  
  23.                     alert("data=="+data);  
  24.                       
  25.                 }   
  26.               
  27.             });  
  28.         }  

 

Java代码  

  1. 请求的页面资源如下:  
  2. <%@ page import="*.cbb.log.service.ILogConfig"%>  
  3. <%@ page import="*.cbb.log.service.impl.LogConfigImpl"%>  
  4. <%  
  5. String toChangeLevel = request.getParameter("to");  
  6. ILogConfig logConImpl = new LogConfigImpl();  
  7. boolean flag = logConImpl.updateLevel(toChangeLevel);  
  8. if(flag){  
  9.     out.write("success");  
  10. }else{  
  11.     out.write("fail");  
  12. }  
  13. %>  

 

Java代码  

  1. 经过查找资料,发现不光客户端需要采用jsonp 方式请求资源,同时请求的服务端返回的值必须做相应的处理,上面的例子中换成如下方式即可:  
  2.   
  3. <%@ page import="*.cbb.log.service.ILogConfig"%>  
  4. <%@ page import="*.cbb.log.service.impl.LogConfigImpl"%>  
  5. <%  
  6. String toChangeLevel = request.getParameter("to");  
  7. String callback = request.getParameter("callbackfun");  
  8. ILogConfig logConImpl = new LogConfigImpl();  
  9. boolean flag = logConImpl.updateLevel(toChangeLevel);  
  10. if(flag){  
  11.     out.write(callback+"({content:'success'})");  
  12. }else{  
  13.     out.write(callback+"({content:'fail'})");  
  14. }  
  15. %>  

 

Java代码  

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

原创粉丝点击