0

次のスクリプトがあります。下から数行上にwindow.location.href、フォームからの結果をアドレスバーに投稿するスクリプトがあります。これは非常に厄介で、GET の代わりに POST を使用したいのですが、アイデアはありますか?

<script language="javascript">
function OnChangedUsername()
{
  if(document.signup.newuserid.value == "")
  {
    document.signup.btnCheckAvailability.disabled = true;
  }
  else
  {
    document.signup.btnCheckAvailability.disabled = false;
  }
}
function createRequestObject() {
  var ro;
  var browser = navigator.appName;
  if(browser == "Microsoft Internet Explorer"){
    ro = new ActiveXObject("Microsoft.XMLHTTP");
  }else{
    ro = new XMLHttpRequest();
  }
  return ro;
}

var http = createRequestObject();

function sndReq() {
  http.open('get', 'password_check.asp?emailaddress=<%Response.Write(emailaddress)%>&check=<%Response.Write(check)%>&password_check='+document.signup.newuserid.value);
  http.onreadystatechange = handleResponse;
  http.send(null);
}

function handleResponse() {
  if(http.readyState == 4){
    var response = http.responseText;
    var update = new Array();

    if(response.indexOf('|' != -1)) {
      update = response.split('|');
      document.getElementById("username_chk").innerHTML = update[0];


      if(document.getElementById("username_chk").innerHTML == "Ok") {
        window.location.href='detailsupdate.asp?username=<%Response.Write(sUsername)%>&check=<%Response.Write(check)%>&EmailAddress='+document.signup.EmailAddress.value+'&Address='+document.signup.Address.value+'&Address1='+document.signup.Address1.value+'&Address2='+document.signup.Address2.value+'&City='+document.signup.City.value+'&PostalCode='+document.signup.PostalCode.value+'&Country='+document.signup.Country.value+'&WorkPhone='+document.signup.WorkPhone.value+'&HomePhone='+document.signup.HomePhone.value+'&MobilePhone='+document.signup.MobilePhone.value+'&FaxNumber='+document.signup.FaxNumber.value+'&AlternativePhone='+document.signup.AlternativePhone.value+'&OO='+document.signup.OO.checked+'&Workshop='+document.signup.Workshop.checked+'&Raised='+document.signup.Raised.checked+'&Ground='+document.signup.Ground.checked+'&pd='+document.signup.newuserid.value+'&Tram='+document.signup.Tram.checked;
      }
    }
  }
}
</script>
4

2 に答える 2

1

応答をブラウザウィンドウに直接レンダリングしてPOSTリクエストを作成する唯一の方法は、フォーム(DOMで生成)を使用して送信することです(これはDOMでも同様に実行できます)。

別の方法は、XMLHttpRequest(または他のAjax手法)を使用して、DOMで応答をレンダリングすることです。

于 2013-03-10T17:42:39.360 に答える
1

フォームデータをGETデータとして渡す必要はありません。メソッドをPOSTとして指定できます。

<form action="script.asp" method="post">
   ...
   <input type="submit" value="submit">
</form>

また、を使用しないでくださいwindow.location.href。これは非常に醜いです。フォームを送信すると(送信ボタンをクリック)、フォームデータがscript.aspにPOSTされます。

フォームを送信するもう1つの方法は、DOMを介して送信することです。document.forms[0].submit();

于 2013-03-10T17:43:22.687 に答える