我有一個簡單的Java應用程序,它對Web服務請求作出反應。Django中的Web服務
當用戶按下按鈕時,會向Java應用程序發送消息。
如果消息是「ping」,則應用程序以「pong」響應,否則 - 「未知消息」。
代碼的Java應用程序:
@Path("/ping-pong")
public class PingPongService {
@POST
@Produces("text/plain")
public String test(@FormParam("message") final String aMessage) {
System.out.println("message from client: " + aMessage);
if ("ping".equalsIgnoreCase(aMessage)) {
System.out.println("ping.equalsIgnoreCase(aMessage)");
return "pong";
} else {
System.out.println("Unknown message");
return "unknown message " + aMessage;
}
}
}
在WAR文件裏,我有以下的HTML代碼,其中工程(當我按下一個按鈕,我從Java應用程序的響應,它是在消息框中顯示):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>JavaScript Ping-Pong Client</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
//This function send post request to the server using jQuery
function testWithJQuery(message){
$.post('http://localhost:8345/rest/ping-pong', { message: message }, function(data) {
alert(data);
});
}
//This function send post request to the server using a low-level XmlHttpRequest instead of the jQuery
//(no dependencies on external libraries)
function test(message){
var http = new XMLHttpRequest();
var url = "http://localhost:8345/rest/ping-pong";
var params = "message=" + message;
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
};
http.send(params);
}
</script>
</head>
<body>
<button onclick="test('ping')">Test</button>
<button onclick="testWithJQuery('ping')">Test using jQuery</button>
</body>
</html>
我想做同樣的事情(用戶按下一個按鈕,一個消息被髮送到Java應用程序和響應在警告消息窗口中顯示)在Django應用程序。
Django的生成下面的HTML代碼:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
//This function send post request to the server using jQuery
function testWithJQuery(message){
$.post('http://localhost:8345/rest/ping-pong', { message: message }, function(data) {
alert(data);
});
}
//This function send post request to the server using a low-level XmlHttpRequest instead of the jQuery
//(no dependencies on external libraries)
function test(message){
var http = new XMLHttpRequest();
var url = "http://localhost:8345/rest/ping-pong";
var params = "message=" + message;
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
};
http.send(params);
}
</script>
</head>
<body>
<button onclick="test('ping')">Test</button>
</body>
</html>
在按下在Django生成的代碼的「測試」按鈕,Java應用程序接收到該消息(我看到這在控制檯輸出),但反應的Java應用程序未在Django網站中顯示,即使HTML代碼與WAR文件中的代碼完全相同。
我該如何解決這個問題,即確保在Django中顯示Java應用程序的響應?
UPD:這是在Chrome中的「網絡」窗格中的詳細的錯誤描述:
你試過'<按鈕的onclick = 「testWithJQuery( '平')」>測試 '? – 2012-07-26 00:05:11
如果輸出的HTML是相同的(不是),那麼用於生成它的語言是完全不相關的。 – Hamish 2012-07-26 01:45:14
@PauloScardine:是的,我試過了,結果是一樣的。 – 2012-07-26 03:37:52