在JQuery里面使用Ajax和Tomcat服务器之间进行数据交互,遇到了跨域请求问题,无法成功得到想要的数据!
错误信息部分截图:
通过错误信息判断知道已经发生在Ajax跨域请求问题了!
当前Tomcat服务器,是一个已经存在的工程,有APP同这部分代码一同工作。我所做的是开发另外一款手机应用程序,并且使用已有的接口!在这种情况下,实现Ajax跨域请求,而且对目前源代码影响越小越好!怎样达到这样的目标?最终通过为Tomcat添加过滤器方式完成!
由于此项目是商业项目,服务器并不是我管理,所以无法提供具体代码和截图,具体实现根据下面这篇文章:
对于不了解JAVA开发朋友,可以通过下面文章了解一下Tomcat的过滤器:
最终,在服务器上面配置好过滤器,客户端通过JQuery Ajax可以和服务器交互数据了,下面是获取数据的部分截图:
我的JQuery Ajax页面代码:
JQuery跨域解决方法
注意:得到返回JSON数据,在Ajax执行成功回调函数中,具体代码是:
//Ajax执行成功后调用的函数 function DoAjaxSuccess(data, status, jqxhr) { //得到返回的JSON数据 var responseText = jqxhr.responseText; //解析JSON数据 $.parseJSON(responseText); //在Chrome浏览器控制台打印信息 console.log(responseText); //在页面显示得到的数据 $("#ajax-responseData").html(responseText); //恢复默认错误信息 $("#ajax-error").html("错误信息:"); }
common.js代码:这是上面文件里面引用的一个提供一些功能的JS文件
//补齐两位数function padleft0(obj) { return obj.toString().replace(/^[0-9]{1}$/, "0" + obj);}//得到当天日期function GetCurTime() { var nowtime = new Date(); var year = nowtime.getFullYear(); var month = padleft0(nowtime.getMonth() + 1); var day = padleft0(nowtime.getDate()); var hour = padleft0(nowtime.getHours()); var minute = padleft0(nowtime.getMinutes()); var second = padleft0(nowtime.getSeconds()); var millisecond = nowtime.getMilliseconds(); millisecond = millisecond.toString().length == 1 ? "00" + millisecond : millisecond.toString().length == 2 ? "0" + millisecond : millisecond; return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second + "." + millisecond;}