1

データベースにデータを追加するために ajax を使用したいのですが、ネットで次のコードを見つけましたが、正常に動作しています。

<script language='javascript'>
reqObj=null;
function saveCust(){
    document.getElementById('res').innerHTML='processing';
    if(window.XMLHttpRequest){
        reqObj=new XMLHttpRequest();
    }else {
        reqObj=new ActiveXObject('Microsoft.XMLHTTP');
    }
    reqObj.onreadystatechange=processSave;
    reqObj.open('POST','./custSave?reqObj.open('POST','./cName?id='+document.getElementById('CustCode').value,true);,true);
    reqObj.send(null);
}
function processSave(){
    if(reqObj.readyState==4){
        document.getElementById('res').innerHTML=reqObj.responseText;
    }
}
</script>

上記のコードは 1 つの文字列のみを送信しますが、フォームには 5 つの文字列があります。

複数のデータを送信するためのコードを誰かが変更してください。

4

1 に答える 1

1

reqObj.open問題は、関数で単一のパラメーターを送信していることです。

reqObj.open('POST','./custSave?reqObj.open('POST','./cName?id='+document.getElementById('CustCode').value,true);,true);

送信するパラメータは のみであることに注意してくださいid

QueryString のフレーバーでさらにパラメーターを追加できます。

id=something&otherParameter=else //and more parameters

IMO ajax リクエストを処理する最も簡単な方法は jQueryを使用することです。.

そこにあるサンプルと PHP を使用した jQuery Ajax POST の例に基づいて、次のコードを使用できます。

  • 5つの文字列が次の形式であると仮定します

    function saveCust(){
        $('#res').html('processing');
        var $form = $(this);
        var serializedData = $form.serialize();
        $.post('./custSave', serializedData, function(responseText) {
            $('#res').html(responseText);
        });
    }
    
  • フォームの外にデータがあると仮定する

    function saveCust(){
        $('#res').html('processing');
        var $form = $(this);
        var serializedData = $form.serialize() + "&id=" + $('#CustCode').val();
        $.post('./custSave', serializedData, function(responseText) {
            $('#res').html(responseText);
        });
    }
    

さらに jQuery 関数を使用してこれを強化することもできますが、それはこの回答の範囲外です。

于 2013-02-20T05:31:36.523 に答える