0

ajax を使用してデータベースからドロップダウンを入力する必要があります。2 つのドロップダウンを使用しています。最初のドロップダウン値が選択されている場合、2 番目のドロップダウン値 (最初のドロップダウンで選択された値に基づいて DB から取得する必要があります) が必要です。表示されます。DAO(Data Access Layer) は 4 つの結果を arraylist オブジェクトとして返しますが、http 応答テキストでは、値ではなくオブジェクトとして出力されます。for ループを使用して反復しようとしましたが、達成できません。これについて私を助けてください。

HTML コード:

    // First Drop Down
    Question Field :<select name="ddlAddQuestionField" id='ddlAddQuestionField' onchange="getFieldPosition()">
        <option value=''>Select Question Field</option>
        <option value='Security Question'>Security Question</option>
        <option value='Personal Info'>Personal Info</option>
    </select>

    // Second DropDown

    User Field Position:<select name="userFieldPosition" id="userFieldPosition" disabled="disabled"> </select>

Javascript コード

function getFieldPosition(){

                    var fieldName =$("#ddlAddQuestionField").val();

                    if(window.XMLHttpRequest){
                        xmlhttp=new XMLHttpRequest();
                    } else {
                        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    xmlhttp.onreadystatechange=function() {

                        if(xmlhttp.readyState==4 && xmlhttp.status==200){

                            document.getElementById("userFieldPosition").disabled=false;                            
                            alert(xmlhttp.responseText);
                            var response =xmlhttp.responseText;

                            for(var i=0;i<response.length;i++) {
                                var elements = "<option value='"+response[i]+"'>"+response[i]+"</option>";
                                $("#userFieldPosition").append(elements);
                            }
                        }
                      }
                        xmlhttp.open("POST","ApplicationController",true);
                        xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                        xmlhttp.send("fieldAction=fieldPosition&fieldName="+fieldName);
                }

サーブレット コード

fieldPositionObj = fieldPositionDaoObj.getFieldPosition(fieldName);   //Hitting the Dao

              // In dao it returns arraylist object.     

            response.setContentType("text/plain");  
                response.setCharacterEncoding("UTF-8"); 
                response.getWriter().write(fieldPositionDaoObj);
4

3 に答える 3

0

以下のコードを試してみましたが、現在は正常に動作しています。

Java スクリプト:

  if(xmlhttp.readyState==4 && xmlhttp.status==200){
        document.getElementById("userFieldPosition").disabled=false;                            
        var response = JSON.parse(xmlhttp.responseText);
        for(var i=0;i<response.length;i++){
            elements  += "<option value='"+response[i].fieldPosition+"'>"+response[i].fieldPosition+"</option>";
        }
        $("#userFieldPosition").append(elements);
        }
}

サーブレット:

 Gson gson = new Gson();
 String json = new Gson().toJson(fieldPositionObj);
 response.getWriter().print(json);
于 2013-05-14T06:23:00.523 に答える
-1

多くのコードを使用せずにこれを実行できる ExtJs などの特定のフレームワークがあります。これを行う唯一の方法は、2 番目のドロップダウン ボックスをdivタグ内に配置することです。最初のドロップダウン ボックスを選択すると、ajax リクエストを行う関数が呼び出されます。success応答を取得したらdiv、これらの値を使用して新しいドロップダウン ボックスを作成し、内容を書き換えます。

于 2013-05-13T11:19:16.947 に答える