当jsp文件放在某个文件夹下时jquery的$.ajax方法失效的--解决方案
来源:互联网 发布:ipadmini安装不了软件 编辑:程序博客网 时间:2024/06/10 05:45
我的页面的代码如下,jquery-1.4.2.min.js导入没有问题,本来这个文件和jquery-1.4.2.min.js是放在webroot目录下的,可以正常运行。
但是我把这两个文件一起放在一个名为test的文件夹下后$.ajax(...)就像没有执行一样,服务器端一点反应都没有(根本就没有访问TestServlet),浏览器的地址栏里只是在路径的末尾加了个#号,没有什么变化,也就是说,页面只是调回本页面而已。 alert("in test");和alert("end");都被执行了,就是中间的$.ajax没有执行
<head>
<script Charset="UTF-8" type='text/javascript' src='jquery-1.4.2.min.js'></script>
<script type="text/javascript">
$(document).ready(function() {
var age=0;
alert("in test");
$("a").click(function() {
alert("click");
$.ajax({
type: "GET",//http请求方式
url: "TestServlet",//服务器端url地址
data: "name=weager"+"&age="+age,//发送给服务器端的数据
dataType: "json",//告诉JQuery返回的数据格式(例如xml、json、jsonp、script等)
success: callback //当请求操作完成数据正确返回时调用callback函数。此处的ajax参数还可以有:complete、success、error。complete是指readystate==4时;success是指state==200时;error是指相应出错或者解析服务器数据出错。
//error: function(data){alert(data);}
});
alert("end");
});
});
function callback(data){
alert("call back 被调用!")
alert(data.age);
$("div").html(data.age);
}
</script>
网上有关这个得问题很少,由于页面上没哟什么变化、服务器又没有任何反应,$.ajax方法又不是自己写的,所以找bug非常困难。后来迫不得已,只有把调试深入到jquery里,但是jquery-1.4.2.min.js里没有换行,调试和查看代码很困,于是我下载了一个uncompressed版的jquery-1.4.2.js来替换jquery-1.4.2.min.js。然后用ie8调试(firebug也可以),调试到5179行查看xhr对象的responseText属性才发现服务器端的报错为404(...test/TestServlet is not avalible),这才知道是服务器再找Servlet的时候找不到匹配的url。
于是我把web.xml里的url-pattern改为了test/TestServlet就可以了,但是test文件夹外的jsp文件访问相同的Servlet时却出了想类似的错,这时我才想起来,要把jsp页面里的basePath设置一下(basePath作用就是设置该页面的路径的前缀),就可以去掉url上的文件夹名了。
具体方法如下:
1. web.xml文件里url-pattern不需要改动,保持原来的就可以了
2. 在<html>前面加上:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
3. 在<head></head>里添加:<base href="<%=basePath%>"> (base标签设置了该页面里其他路径的前缀)
OK~~搞定了,只要能找到报错就容易解决问题,最怕的就是看不到报的错,运行又不正常!
- 当jsp文件放在某个文件夹下时jquery的$.ajax方法失效的--解决方案
- 当jsp文件放在某个文件夹下时jquery的$.ajax方法失效的--解决方案
- jquery ajax方法如load,get等 在chrome下失效的问题
- jquery ajax方法如load,get等 在chrome下失效的问题
- jquery ajax方法如load,get等 在CHROME下失效的问题(已经解决)
- ie6下jquery submit 方法失效 不起作用 的解决方案
- IE浏览器下jquery的ajax方法失效解决办法
- jQuery ajax方法在Chrome浏览器下失效问题
- jquery getjson方法在ie下失效的问题
- shape的使用创建步骤文件要放在drawable文件夹下如果放在layout下会报错
- 某个文件夹下的文件分类
- 读取某个文件夹下的所有文件
- 读取某个文件夹下的所有文件
- 删除某个文件夹下的所有文件
- STL---获取某个文件夹下的文件
- 返回某个文件夹下所有的文件
- 编译src目录下的源文件,然后放在compile文件夹下,接着把compile下的class文件打包,放在dist文件夹下
- 编译src目录下的源文件,然后放在compile文件夹下,接着把compile下的class文件打包,放在dist文件夹下,并设置清单
- 在对话框中使用CSrollView
- COM编程入门:第二部分 深入COM服务器
- C++成员函数指针的使用方法
- [wtl学习]-[第三天]-THUNK技术学习
- yum 失败(This system is not registered with RHN.)解决
- 当jsp文件放在某个文件夹下时jquery的$.ajax方法失效的--解决方案
- [hadoop源码阅读][4]-org.apache.hadoop.io.compress系列2-选择编解码器
- Extjs4 关于Store的一些操作
- 时刻提醒自己,多思考、用最简单的方法做事
- GNU ARM汇编--(二十)总结
- Vmware与主机间共享文件的七种方法(附图+详解)
- ECLIPSE插件获取到的有关“当前选择项”内容的一种典型实现方法
- 启动代码和BootLoader的区别和联系
- (iPhone/iPad开发)设置UIAlertView中message字段左对齐