2013-04-20 35 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