2014-10-18 121 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