• <td id="ae6ms"><li id="ae6ms"></li></td>
  • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
  • <table id="ae6ms"></table>
  • <td id="ae6ms"></td>
    <td id="ae6ms"></td>
  • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
  • <td id="ae6ms"></td>
  • <table id="ae6ms"><li id="ae6ms"></li></table>
  • <table id="ae6ms"></table>
    西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
    軟件
    軟件
    文章
    搜索

    首頁編程開發javascript|JQuery → 當jsp文件放在某個文件夾下時jquery的.ajax方法失效的解決方案

    當jsp文件放在某個文件夾下時jquery的.ajax方法失效的解決方案

    相關軟件相關文章發表評論 來源:櫻花樹下的家時間:2010/3/16 17:28:23字體大?。?em class="fontsize">A-A+

    作者:佚名點擊:433次評論:1次標簽: ajax

    • 類型:編程控件大?。?i>6.8M語言:中文 評分:2.5
    • 標簽:
    立即下載

     我的頁面的代碼如下,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~~搞定了,只要能找到報錯就容易解決問題,最怕的就是看不到報的錯,運行又不正常!

      相關評論

      閱讀本文后您有什么感想? 已有人給出評價!

      • 8 喜歡喜歡
      • 3 頂
      • 1 難過難過
      • 5 囧
      • 3 圍觀圍觀
      • 2 無聊無聊

      熱門評論

      最新評論

      發表評論 查看所有評論(1)

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      字數: 0/500 (您的評論需要經過審核才能顯示)
      女人让男人桶30分钟免费视频,女人张开腿让男人桶个爽,一进一出又大又粗爽视频
    • <td id="ae6ms"><li id="ae6ms"></li></td>
    • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
    • <table id="ae6ms"></table>
    • <td id="ae6ms"></td>
      <td id="ae6ms"></td>
    • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
    • <td id="ae6ms"></td>
    • <table id="ae6ms"><li id="ae6ms"></li></table>
    • <table id="ae6ms"></table>