JQuery - Ajax和Tomcat跨域请求问题解决方法!
在JQuery里面使用Ajax和Tomcat服务器之间进行数据交互,遇到了跨域请求问题,无法成功得到想要的数据!
错误信息部分截图:
通过错误信息判断知道已经发生在Ajax跨域请求问题了!
当前Tomcat服务器,是一个已经存在的工程,有APP同这部分代码一同工作。我所做的是开发另外一款手机应用程序,并且使用已有的接口!在这种情况下,实现Ajax跨域请求,而且对目前源代码影响越小越好!怎样达到这样的目标?最终通过为Tomcat添加过滤器方式完成!
由于此项目是商业项目,服务器并不是我管理,所以无法提供具体代码和截图,具体实现根据下面这篇文章:
https://blog.csdn.net/appppppen/article/details/73196448
对于不了解JAVA开发朋友,可以通过下面文章了解一下Tomcat的过滤器:
http://www.runoob.com/servlet/servlet-writing-filters.html
最终,在服务器上面配置好过滤器,客户端通过JQuery Ajax可以和服务器交互数据了,下面是获取数据的部分截图:
我的JQuery Ajax页面代码:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>JQuery跨域解决方法</title>
<script src="js/common.js"></script>
<script src="js/jquery-2.1.4.min.js"></script>
</head> <script language="JavaScript"> $(document).ready(function () { $("#submit").unbind("click").bind("click", function (e) {
e.preventDefault(); $.ajax({
url: "请求数据网址",
type: "post", data: $("#form1").serialize(),//要提交数据
//另外一种提交数据方式,有的时候应该有用处
// data: {
// '参数名称': '参数值'
// }, dataType: "json",//从服务器返回数据类型
beforeSend: function (request) {
//发送请求前调用的函数,需要配置可以在这里做
},
success: DoAjaxSuccess,
error: DoAjaxError,
complete: DoComplete
}) //Ajax执行成功后调用的函数
function DoAjaxSuccess(data, status, jqxhr) { //得到返回的数据
var responseText = jqxhr.responseText; //解析JSON数据
$.parseJSON(responseText); //在Chrome浏览器控制台打印信息
console.log(responseText); //在页面显示得到的数据
$("#ajax-responseData").html(responseText); //恢复默认错误信息
$("#ajax-error").html("错误信息:");
} //Ajax执行失败后调用的函数
function DoAjaxError(jqxhr, status, errorMsg) {
//在页面显示错误信息
$("#ajax-error").html("错误信息:" + errorMsg);
} //Ajax执行完毕后调用的函数
function DoComplete(jqxhr, status) {
//在页面显示完成状态
$("#ajax-status").html("完成状态:" + status); //操作时间
var curTime = GetCurTime();
$("#ajax-responseTime").html(curTime);
} });
}) </script> <body>
<form id="form1" name="form1" method="post" action="#">
<table width="100%" border="1">
<tbody>
<tr>
<td>
<table width="100%" border="0">
<tbody>
<tr>
<td width="7%">服务器:Tomcat</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" border="1">
<tbody>
<tr>
<td width="67%">
<table width="100%" border="1">
<tbody>
<tr>
<td><label for="tel">电话:</label>
<input name="tel" type="text" id="tel" value=""></td>
</tr>
<tr>
<td><label for="pwd">密码:</label>
<input name="pwd" type="text" id="pwd" value=""></td>
</tr>
</tbody>
</table>
</td>
<td width="33%"><input type="submit" name="submit" id="submit" value="提交"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>操作时间:<a style="color: red" id="ajax-responseTime"> </a></td>
</tr>
<tr>
<td id="ajax-status">完成状态:</td>
</tr>
<tr>
<td id="ajax-error">错误信息:</td>
</tr>
<tr>
<td id="ajax-responseData"> </td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
注意:得到返回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;
}
JQuery - Ajax和Tomcat跨域请求问题解决方法!的更多相关文章
- jQuery ajax的jsonp跨域请求
一直在听“跨域跨域”,但是什么是跨域呢?今天做了一些了解.(利用jQuery的jsonp) jQuery使用JSONP跨域 JSONP跨域是利用script脚本允许引用不同域下的js实现的,将回调方法 ...
- jquery ajax GET POST 跨域请求实现
同一段逻辑代码需要在多个网站中使用, 每个网站都新建一个ashx真是扯蛋的作法, 所以想只请求一处的ashx, 这样便于维护和修改, 那么,ajax跨域问题就来了. 废话少说, 直接上代码, 我现 ...
- tomcat跨域请求
tomcat A请求tomcat B中的数据(本人是在同一台机器上2个tomcat端口不同,在不同机器上有时间会测得) 博主用的是ajax请求 在A 请求B中数据,用下面的方法可以 在被请求的tomc ...
- js中ajax如何解决跨域请求
js中ajax如何解决跨域请求,在讲这个问题之前先解释几个名词 1.跨域请求 所有的浏览器都是同源策略,这个策略能保证页面脚本资源和cookie安全 ,浏览器隔离了来自不同源的请求,防上跨域不安全的操 ...
- Nginx反向代理、CORS、JSONP等跨域请求解决方法总结
由于 Javascript 同源策略的存在使得一个源中加载来自其它源中资源的行为受到了限制.即会出现跨域请求禁止. 通俗一点说就是如果存在协议.域名.端口或者子域名不同服务端,或一者为IP地址,一者为 ...
- Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案
最近的项目中涉及到了应用ajax请求后台系统登录,身份认证失败,经过不断的调试终于找到解决方案. 应用场景: 项目测试环境:前端应用HTML,js,jQuery ajax请求,部署在Apache服务器 ...
- jQuery 跨域访问问题解决方法(转)
转自:http://www.jb51.net/article/21213.htm 浏览器端跨域访问一直是个问题, 多数研发人员对待js的态度都是好了伤疤忘了疼,所以病发的时候,时不时地都要疼上一疼.记 ...
- 客户端ajax请求为实现Token验证添加headers后导致正常请求变为options跨域请求解决方法
客户端为了实现token认证,通过Jquery的ajaxSetup方法全局配置headers: 全局配置headers后会导致部分不需要token认证的请求变为options请求,导致跨域访问.报错信 ...
- 第114天:Ajax跨域请求解决方法(二)
一.什么是跨域 我们先回顾一下域名地址的组成: http:// www . google : 8080 / script/jquery.js http:// (协议号) www (子 ...
随机推荐
- C# Socket网络编程精华篇
我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本 ...
- Java中弹出对话框中的几种方式
1.显示一个错误对话框,该对话框显示的 message 为 'alert': JOptionPane.showMessageDialog(null, "alert", " ...
- BZOJ 2726 [SDOI2012] 任务安排 - 斜率优化dp
题解 转移方程与我的上一篇题解一样 : $S\times sumC_j + F_j = sumT_i \times sumC_j + F_i - S \times sumC_N$. 分离成:$S\t ...
- maven使用感受
第一次接触的时候,什么都不懂,感觉好复杂. 后来系统地看了一个使用教程: 简单评价一下: 自动帮我们下载jar架包,还有就是可以执行命令自己部署到远程服务器上面去. 缺点: 学习成本.一般人不了解.第 ...
- 3、基本的Get和Post访问(含代理请求)
Get方式访问 HttpClient hc = new DefaultHttpClient(); HttpUriRequest request = new HttpGet("http://w ...
- 百度词汇检索,计算PMI值
'''词汇检索百度返回值,并且计算PMI值的类''' from bs4 import BeautifulSoup import requests import re import pandas as ...
- 2018.10.19 bzoj1584: Cleaning Up 打扫卫生(线性dp)
传送门 dp妙题. 考虑到每个位置分一组才花费nnn的贡献. 因此某一段不同的数的个数不能超过sqrt(n)sqrt(n)sqrt(n),于是对于当前的位置iii我们记pos[j]pos[j]pos[ ...
- 破解Excel密码
https://zhidao.baidu.com/question/98055974.html 方法:1\打开文件2\工具---宏----录制新宏---输入名字如:aa3\停止录制(这样得到一个空宏) ...
- html自适应布局,@media screen,媒体查询
html自适应布局,@media screen,媒体查询 自适应代码示例: <!doctype html> <html> <head> <meta chars ...
- python编码(四)
一.预备知识 字符集 1, 常用字符集分类 ASCII及其扩展字符集作用:表语英语及西欧语言.位数:ASCII是用7位表示的,能表示128个字符:其扩展使用8位表示,表示256个字符.范围:ASCII ...