jQuery AJAX调用servlet不能在锚标记中工作

时间:2013-04-20 20:44:55

标签: jsp jquery servlets

我是jQuery和Servlets的新手。在一个学校项目上工作,现在我遇到了这个问题。

我的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中,我从DB读取并转发到类似这样的JSP

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

当我点击任何锚标签时$.get被点击,但我的JSP页面没有显示。奇怪的是,如果我检查firebug的网络流量,我看到我的AJAX调用通过,我甚至可以看到DisplayVendor.jsp页面作为响应。但它没有显示出来。

有人可以指出我是否犯了错误。

谢谢

1 个答案:

答案 0 :(得分:0)

您拨打$.get(url),但不对响应做任何事情。将其更改为

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

显示您收到的内容。

例如,要使用AJAX调用返回的HTML更新id为“dynamicLoadedDiv”的div的内容,请使用

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

或只是

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

阅读the documentation了解详情。

请注意,如果您的目标是替换整个页面内容,我实际上并没有看到制作AJAX请求的重点。在这种情况下使用简单的超链接。