【问题标题】:JSP not returning data to JQuery AJAXJSP 不向 JQuery AJAX 返回数据
【发布时间】:2014-12-14 03:42:02
【问题描述】:

这是我的功能。我正在尝试从下面的 JSP 页面获取数据。这两个文件位于同一位置。我的错误是什么?

sample.js(包含在某个文件中):

function getUnits(){
 $.ajax({

url:"../js/addunits.jsp",
success: function(returndata){
    alert(returndata);
}
});
}

JSP 页面addunits.jsp:

 <%
     out.print("hi");
 >%

在 HTML 页面中,我有一个选择列表。 更改时,将调用此函数getunits

    $("#select").change(function() {
    getUnits();
    var e = document.getElementById("select");
    var SelValue = e.options[e.selectedIndex].text;
    document.getElementById('crs').innerHTML = SelValue;
}); 

【问题讨论】:

  • 你在哪里打电话给addunits()?您是否使用浏览器控制台检查错误并查看是否正在发出请求?
  • 调用后的状态是什么?
  • 我已经检查过了。没有线索。
  • no clues 是什么意思?对我来说,这意味着提出了请求并返回了预期的数据
  • 我的意思是控制台没有显示任何错误。我不确定是否提出了请求。我做对了吗?

标签: java javascript jquery ajax jsp


【解决方案1】:

您忘记刷新缓冲区。

<%
 out.print("hi");
 out.flush();
%> 

编辑:

如果您有 ajax 调用的成功状态代码,这首先是一个假设,它可能在特定情况下像您一样,但并非在所有情况下,因为如果您使用了某些包含在 中的 javascript文件,那么你可能会犯同样的错误两次。在页面上构建某些 URL 时,不要在代码中使用相对路径,特别是如果页面是从不同的地方分派/包含的。接下来在绝对路径中,您应该包含一个上下文路径${pageContext.request.contextPath} 或使用JSTL 的&lt;c:url&gt; 标记。您可以加载sample.js,但不能在其中加载,因为您只能在 JSP 页面上使用 JSP 内容。因此,您可以在 JSP 中构建 URL,并将其作为参数传递给 js 函数

sample.js:(包含在某个文件中)

function getUnits(theUrl){
 $.ajax({

   url: theUrl,
   success: function(returndata){
     alert(returndata);
   }
 });
}

所以,在 JSP 页面中(你应该使用 jsp 文件夹,你应该保存 JSP 页面)使用

<script>
  ...
  getUnits('${pageContext.request.contextPath}/jsp/addunits.jsp');
  ...
</script>

【讨论】:

  • 实际上jsp没有返回任何东西。我想知道原因。
  • 数据太小,小于缓冲区大小的缓冲区在刷新之前不会随响应一起发送。
  • @RomanC 请编辑您的答案以包含该信息,因为人们经常不阅读 cmets。谢谢!
  • 非常感谢@RomanC。这些信息帮助了我。但我发现错误是关闭标签拼写错误为 >% 而不是 %>.
  • 这是一个错字,刚刚删除。
猜你喜欢
  • 1970-01-01
  • 2015-08-02
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 2018-01-20
相关资源
最近更新 更多