1. <nav id="9tq2v"><big id="9tq2v"><video id="9tq2v"></video></big></nav>
        1. <label id="9tq2v"></label>
          设为首页 - 加入收藏 镇江站长网 (http://www.uswotlk.com)- 中小站长必上的网站 - 聚焦镇江站长前沿资讯!
          热搜: 手机 优酷 中国 创业者
          当前位置: 主页 > 新闻资讯 > 传媒 > 正文

          JSP jQuery的$.ajax方法失效的解决方法

          发布时间:2018-09-04 03:19 所属栏目:[传媒] 来源:站长网
          导读:我的页面的代码如下,jquery-1.4.2.min.js导入没有问题,本来这个文件和jquery-1.4.2.min.js是放在webroot目录下的,可以正常运行。 但是我把这两个文件一起放在一个名为test的文件夹下后$.ajax(...)就像没有执行一样,服务器端一点反应都没有(根本就没有

          我的页面的代码如下,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~~搞定了,只要能找到报错就容易解决问题,最怕的就是看不到报的错,运行又不正常!

          【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

          网友评论
          推荐文章
          金亚洲游戏