2010年2月9日 星期二

Post form data by javascript

在html上,有時候我們是自己用javascript定義GET字串作發送的,像是test?a=1&b=2這樣子的形式。然後再利用eval作法送出去,作法像下面的樣子。

var code=”location=test?a=1&b=2”;
eval(code);

後來基於某種原因,希望改成用POST方式傳送。在不改變原有form的前提下,有人說可以利用xmlHttpRequest方式傳送,但我認為這方式只能在背景執行,對於一些像真正submit的form需要換頁而言並不適用。後來我有找到利用javascript即時建立一個隱藏form的方式傳送,我認為這是最好的解法。改寫了一些適合我的程式碼。

<script language=javascript>

var para="a=1&b=2";

function submitFrm(){
  para_array = para.split('&');
  var postForm = document.createElement("form");
  postForm.setAttribute("method", "post");
  postForm.setAttribute("action", "test");
  var i=0;
  for(i=0;i<para_array.length;i++){
    hash_array=para_array[i].split('=');
    var hiddenField = document.createElement("input");
    hiddenField.setAttribute("name", hash_array[0]);
    hiddenField.setAttribute("value", hash_array[1]);;
    hiddenField.setAttribute("type", "hidden");
    postForm.appendChild(hiddenField);
  }
  document.body.appendChild(postForm);
  postForm.submit();
}

</script>

參考資料:
[1] Javascript Post on Form Submit open a new window

沒有留言: