小编典典

JSP不会将数据返回到JQuery AJAX

jsp

这是我的功能。我正在尝试从下面的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;
});

阅读 302

收藏
2020-06-08

共1个答案

小编典典

您忘记刷新缓冲区。

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

编辑:

如果您有ajax调用的成功状态代码,并且在某些情况下(例如您的情况),但并非在所有情况下,这都是一个假设,因为如果您使用 某个文件中包含的
javascript
,则可能会同样的错误两次。在页面上构建某些URL时,请不要在代码中使用相对路径,尤其是在页面是从其他地方分派/包含的情况下。接下来,在绝对路径中,您应该包括一个上下文路径,${pageContext.request.contextPath}或者使用JSTL的<c:url>标签。您可以在加载时执行此操作,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>
2020-06-08