2014-10-18 87 views
1

这是我的函数。我试图从下面的JSP页面获取数据。这两个文件都在相同的位置。我的错误是什么?JSP不将数据返回给JQuery AJAX

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; 
}); 
+0

你在哪里调用'addunits()'?您是否使用过浏览器控制台检查错误并查看是否有请求? – charlietfl 2014-10-18 20:05:34

+0

你打电话后的状态是什么? – 2014-10-18 20:10:03

+0

我已检查。没有线索。 – Vamshi 2014-10-18 20:27:49

回答

1

您忘记刷新缓冲区了。

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

编辑:

这是在情况下,首先假设,如果您对Ajax调用的成功状态代码,它可能是像你这样的特定的场景,但不是在所有情况下,因为如果您使用某个文件中包含的javascript ,那么您可能会犯同样的错误两次。在页面上构建一些URL时,请勿在代码中使用相对路径,特别是如果页面是从不同位置分派/包含的。接下来在绝对路径中,您应该包含上下文路径${pageContext.request.contextPath}或使用JSTL的<c:url>标记。你可以加载sample.js,但不能加入它,因为你只能在JSP页面上使用JSP的东西。所以,你可以建立网址的JSP,并将它传递作为参数传递给这样的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> 
+0

其实jsp没有返回任何东西。我想知道原因。 – Vamshi 2014-10-18 20:23:35

+0

数据太小,小于一个缓冲区大小不会与响应一起发送,直到缓冲区被刷新。 – 2014-10-18 20:27:00

+0

@RomanC请编辑您的答案以包含该信息,因为人们经常不会阅读评论。谢谢! – 2014-10-18 21:22:21