2011-05-20 51 views
2

我有這個簡單的html代碼片段,每當我點擊任何按鈕時,服務器將發回一些字符串,我希望它在#response div中顯示。如何從div內的servlet獲取響應數據?

<form target="_self" method="post"> 
    <table> 
     <tr> 
      <td width="35"><input type="button" id="btncreate" value="create" onclick="getData();"></td> 
      <td width="35"><input type="button" id="btnupdate" value="update"></td> 
      <td width="30"><input type="button" id="btndelete" value="delete"></td> 
     </tr> 
     <tr> 
      <td>Name : </td>      
      <td><input type="text" id="name" value=""></td> 
     </tr> 
     <tr> 
      <td>File : </td> 
      <td><input type="file" id="filname" value=""></td> 
     </tr> 
    </table> 
</form> 
<div id="response"></div> 

在JS我使用基於瀏覽器XMLHttpRequestActiveXObject發送請求,servlet和我能得到我怎麼能直接此輸出到我的#response格在client.responseText()反應?

這裏是我的JS

function getData() 
{ 
var client; 
var data; 
var url_action="/temp/getData"; 
if(window.XMLHttpRequest) 
{ 
    client=new XMLHttpRequest(); 
} 
else 
{ 
    client=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
client.onreadystatechange=function() 
{ 
    if (client.readyState==4 && client.status==200) 
    { 
     document.getElementById("response").innerHTML=client.responseText; 
    } 
}; 
data="name="+document.getElementById("name").value+"&file="+document.getElementById("filname").value; 
client.open("POST",url_action,true); 
client.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
client.send(data); 
} 

的Servlet POST方法

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    PrintWriter out=response.getWriter(); 
    log.info("Good"); 
    out.println("Good to go"); 
} 

但使用js腳本不是jQuery的,我不能夠從servlet的得到輸出

感謝所有爲一jQuery代碼,在Javascript中的任何替代?

+2

相關:http://stackoverflow.com/questions/4112686/update-current-page-with-a -servlet – BalusC 2011-05-20 12:41:02

回答

2

根本就

success: function(data) { 
var res = client.responseText(); 
$('#response').html(res); 
// or $('#response').append(res); 
}); 

簡單Java腳本document.getElementById("response").innerHTML=res;

+0

@diEcho:謝謝,我會試着回來,還有什麼是在JS的替代品,只是爲了好奇 – abi1964 2011-05-20 09:45:25

+0

更新我的答案,參考:http://www.w3schools.com/ajax/tryit.asp? filename = tryajax_first – diEcho 2011-05-20 09:49:49

+0

@diEcho:非常感謝,我也得到了其他答案,但你是第一個,所以我會我給你:) – abi1964 2011-05-20 09:51:45

1

由於使用的是(基於問題的標籤assumtion)jQuery的,你可以使用.load()-method

$('#some-button').click(function (e) { 
    e.preventDefault(); 
    $('#response').load('url/to/entry/point'); 
}); 

這有jQuery爲您做所有ajax工作的好處(創建和處理XMLH ttpRequest和ActiveX的東西)。

2

如果你在你的項目中使用jQuery:

$('#response').load("http://url...")

http://api.jquery.com/load/

+0

使用jquery它的工作原理,但通過使用JS我試過了,它沒有給出任何輸出,我編輯了這個問題來顯示我的JS,你能幫助找到代碼有問題嗎? – abi1964 2011-05-20 12:19:41