2013-04-20 33 views
0

我是jQuery和Servlets的新手。在一個學校項目上工作,現在我陷入了這個問題。jQuery AJAX調用sevlet不能在錨標記中工作

我在我的proj3.html文件中有一個像這樣的錨標籤左側的導航欄。

<ul class="nav nav-list"> 

      <li class="nav-header">Labels</li> 
      <li><a href="" class="labels">Sony</a></li> 
      <li><a href="" class="labels">Spinnin</a></li> 
      <li><a href="" class="labels">BMG</a></li> 
      <li><a href="" class="labels">Ultra</a></li> 
     <li><a href="" class="labels">Universal</a></li> 

      <li class="nav-header">Genere</li> 
      <li><a href="" class="genere">Rock</a></li> 
      <li><a href="" class="genere">Alternative Rock</a></li> 
      <li><a href="" class="genere">Pop</a></li> 
      <li><a href="" class="genere">EDM</a></li> 
      <li><a href="" class="genere">Hip-Hop</a></li> 
     </ul> 

Javascript中我有這個

$('a.labels').on('click',function(e){ 

     var url = "http://example.edu/servlet/SampleQuery";  
      $.get(url); 
     e.preventDefault(); 
    } 

} 

裏面我的servlet SampleQuery.java我從數據庫讀取,並轉發給JSP這樣

 RequestDispatcher dispatcher = null; 
     dispatcher = request.getRequestDispatcher("/jsp/DisplayVendor.jsp"); 
    dispatcher.forward(request, response); 

當我點擊任何的錨點標記$.get被擊中,但我的JSP頁面沒有得到顯示。奇怪的是,如果我檢查網絡流量的螢火蟲,我看到我的AJAX呼叫通過,我甚至可以看到DisplayVendor.jsp頁面的響應。但它沒有得到顯示。

有人可以指出我是否犯了任何錯誤。

感謝

回答

0

你叫$.get(url),但不要做與響應什麼。將其更改爲

$.get(url, function(data) { 
    alert('here is the response data : ' + data); 
}); 

顯示您收到的內容。

更新ID爲 「dynamicallyLoadedDiv」 的股利由AJAX調用返回的HTML,例如內容,請使用

$.get(url, function(data) { 
    $('#dynamicallyLoadedDiv').html(data); 
}); 

或者乾脆

$('#dynamicallyLoadedDiv').load(url); 

閱讀the documentation瞭解更多信息。

請注意,如果您的目標是要替換整個頁面內容,我並不真正看到提出AJAX請求的要點。在這種情況下使用一個簡單的超鏈接。

+0

感謝您的回答。我想我會用一個簡單的超鏈接代替。但出於好奇爲什麼不從servlet轉發到使用AJAX的JSP?爲什麼我使用$ .get(url)沒有成功的原因是,我的假設是我不會得到迴應,因爲我正在轉發到新的JSP頁面。 – Sush 2013-04-20 21:52:54

+0

你不明白什麼是轉發。它完全發生在服務器端。該servlet是以請求和響應作爲參數來調用的。它執行其邏輯,然後轉發到JSP。這包括說:我已經完成了我的工作,現在JSP應該儘自己的一部分(具有相同的請求和相同的響應)。所以就好像servlet在自己的doGet()方法的末尾調用另一個servlet的doGet()一樣。然後,JSP動態生成HTML代碼並將其發送給響應。然後你的JavaScript收到響應,並且應該用它做一些事情。 – 2013-04-20 22:13:39