这是我的功能。我正在尝试从下面的JSP页面获取数据。这两个文件都在同一位置。我怎么了
sample.js (包含在某些文件中):
sample.js
function getUnits(){ $.ajax({ url:"../js/addunits.jsp", success: function(returndata){ alert(returndata); } }); }
JSP页面addunits.jsp:
addunits.jsp
<% out.print("hi"); >%
在HTML页面中,我有一个选择列表。更改时,getunits将调用此函数。
getunits
$("#select").change(function() { getUnits(); var e = document.getElementById("select"); var SelValue = e.options[e.selectedIndex].text; document.getElementById('crs').innerHTML = SelValue; });
您忘记刷新缓冲区。
<% out.print("hi"); out.flush(); %>
编辑:
如果您有ajax调用的成功状态代码,并且在某些情况下(例如您的情况),但并非在所有情况下,这都是一个假设,因为如果您使用 某个文件中包含的 javascript ,则可能会同样的错误两次。在页面上构建某些URL时,请不要在代码中使用相对路径,尤其是在页面是从其他地方分派/包含的情况下。接下来,在绝对路径中,您应该包括一个上下文路径,${pageContext.request.contextPath}或者使用JSTL的<c:url>标签。您可以在加载时执行此操作,sample.js但不能在其中执行加载,因为您只能在JSP页面上使用JSP内容。因此,您可以在JSP中构建URL并将其作为参数传递给js函数,就像这样
${pageContext.request.contextPath}
<c:url>
sample.js :(包含在某些文件中)
function getUnits(theUrl){ $.ajax({ url: theUrl, success: function(returndata){ alert(returndata); } }); }
因此,在JSP页面中(您应该使用jsp应保存JSP页面的文件夹)使用
jsp
<script> ... getUnits('${pageContext.request.contextPath}/jsp/addunits.jsp'); ... </script>