2012-06-25 51 views
0
I'm using XMLHttpRequest POST to send data to a jsp. But the jsp is not invoked. Here is my code. 

的JS方法被調用點擊一個按鈕XMLHttpRequest的POST調用不工作

<form action=""> 
<div><input type="button" value="POST DATA" 
    onclick=test(); 
/></div></form> 

JS方法做一個HTTP POST -

<script> 
function test() { 
     var xmlHttpRequest = new ActiveXObject('Msxml2.XMLHTTP'); 
     xmlHttpRequest.open("post", 
       "http://localhost:4502/content/myTest.html", true); 
     xmlHttpRequest.setRequestHeader("Content-Type", 
       "application/x-www-form-urlencoded"); 
     xmlHttpRequest.onreadystatechange = function() { 
      getResult(xmlHttpRequest) 
     }; 
     try { 
      xmlHttpRequest.send("username=john"); 
     } catch (e) { 
      alert("error" + e); 
     } 
    } 
    function getResult(xmlHttpRequest) { 
     if (xmlHttpRequest.readyState == 4) { 
      if (xmlHttpRequest.status == 200) { 
       alert("ok"); 
      } else { 
       alert("error" + xmlHttpRequest.status); 
      } 
     } 
    } 
</script> 

myTest.jsp寫POST請求一個文本文件 -

<% 
    FileOutputStream fos = new FileOutputStream("D:/test.txt"); 
    PrintWriter pw = new PrintWriter(fos); 
    pw.println(request.getParameter("username")); 
    %> 

myTest.jsp is沒有被調用,但我得到了OK警報。如果我嘗試http get而不是post並將參數追加到uri,它就會起作用。我正在使用IE8。

請幫忙。

回答

0

您是否嘗試過使用jQuery爲了讓您的帖子?

在使用它之前,您需要在頁面中包含jQuery庫。

使用jQuery也將使您的代碼跨瀏覽器兼容,並且該鏈接上的示例更容易遵循。還有其他的jQuery options,如果你想更好地控制請求。我強烈推薦它 - 對於這樣的任務和其他許多任務,它會讓你的生活變得更簡單,讓你的編碼更加愉快!

+0

是的,我能夠創建一個功能齊全的jquery ajax xmlhttprequest,但是他們的api沒有他們的服務器上的Allow-Control-Access-Origin設置,用於'安全原因'。 – JosephMCasey

+0

如果您正在點擊的服務支持JSONP,它將解決此問題。如果它不支持它,也許它應該。另見http://stackoverflow.com/questions/20518653/jsonp-cross-origin-error-no-access-control-allow-origin-header-is-present – Shawn