0

非同期のPOSTリクエストを2つの異なるphpスクリプトに送信する単純なJavascript関数があります。簡単なコードは次のとおりです。

<script type="text/javascript">
function send(oForm, what)
{
var ios3 = oForm.ios3.checked; 
var ios4 = oForm.ios4.checked;
var ios5 = oForm.ios5.checked;
var id = oForm.id.value; 

if (what == confirm)
{
    if (window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}// code for IE7+, Firefox, Chrome, Opera, Safari
    else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}// code for IE6, IE5

    xmlhttp.onreadystatechange=function()
    {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            var output = xmlhttp.responseText;
            if (output != ""){document.getElementById("debug").innerHTML=output; document.getElementById(id).style.display = 'none';}
        }
    }

    xmlhttp.open("POST","ajax/confirm.php",true);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');  
    xmlhttp.send('id=' + encodeURIComponent(id) + '&ios3=' + encodeURIComponent(ios3) + '&ios4=' + encodeURIComponent(ios4) + '&ios5=' + encodeURIComponent(ios5));
}

if (what == remove)
{
    if (window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}// code for IE7+, Firefox, Chrome, Opera, Safari
    else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}// code for IE6, IE5

    xmlhttp.onreadystatechange=function()
    {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            var output = xmlhttp.responseText;
            if (output != ""){document.getElementById("debug").innerHTML=output; document.getElementById(id).style.display = 'none';}
        }
    }

    xmlhttp.open("POST","ajax/confirm.php",true);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');  
    xmlhttp.send('id=' + encodeURIComponent(id) + '&ios3=' + encodeURIComponent(ios3) + '&ios4=' + encodeURIComponent(ios4) + '&ios5=' + encodeURIComponent(ios5));
}

}

そして、これらの単純な入力ボタンを使用してこの関数を呼び出します(phpエコー用にこれらを追加した「\」なし)

<input type=\"button\" id=\"submit\" value=\"Confirm\" onclick=\"send(this.form, confirm)\" />
<input type=\"button\" id=\"remove\" value=\"Remove\" onclick=\"send(this.form, remove)\" />

なぜそれが最初のボタンだけで機能するのか誰かが私に説明できますか?

4

1 に答える 1

1

'おそらくconfirmjavascript関数として解釈されるためですconfirm()。そしてそれは実際に何かを返します。そして、私はremoveこの場合は未定義だと思います。文字列を2番目の引数として渡し、その文字列を別の文字列と比較してみてください。だからそれは

<input type=\"button\" id=\"submit\" value=\"Confirm\" onclick=\"send(this.form, 'confirm')\" />
<input type=\"button\" id=\"remove\" value=\"Remove\" onclick=\"send(this.form, 'remove')\" />

if (what == "confirm")
{
   ...
}
if (what == "remove")
{
   ...
}
于 2012-10-03T14:35:09.873 に答える