ここではjson + ajax + struts2
、依存ドロップダウンを作成するために使用しています。最初のドロップダウンは、2 番目のドロップダウンがロードされている値に基づいた値を持ちます。2番目のドロップダウンでは、最初のドロップダウンのデータをクリックするたびに未定義の値が返されます(ここではonchange
イベントを使用しています)。struts2 から ajax レスポンスをオブジェクトとして取得しています。これらのオブジェクトを 2 番目のドロップダウンの文字列に変換したい (ID と名前が含まれている必要があります)。オブジェクトを文字列に変換する方法がわかりません。スタックオーバーフローとグーグルでいくつかのリンクを試しましたが、うまくいきません。これが私のコードです:
ストラット2:
second_drop_downList=retrieveSecond();
ServletActionContext.getResponse().setContentType("text/html");
PrintWriter out = ServletActionContext.getResponse().getWriter();
out.print(second_drop_downList);
out.flush();
ここでは、データベースに存在するデータの正しいサイズを取得しています。上記のコードを使用して、これらのデータを ajax 応答に渡しています。
ここに私のajaxコードがあります:
$(".country").change(function() {
var id = $(this).val();
var dataString = 'id=' + id;
$.ajax({
type : "POST",
url : "sendDropdown.action",
data : dataString,
success : function(response) {
alert(response);
var myJSONText = JSON.stringify(response);
//alert(myJSONText);
var obj = JSON.parse(myJSONText);
alert(obj);
var html = '<option value="">select Section</option>';
for ( var i = 0; i < obj.length; i++) {
html += '<option value="'+obj[i].id+'">' + obj[i].dep_name
+ '</option>';
}
html += '</option>';
$('.city').html(html);
}
});
});
ここでは、16 進数形式で応答を取得しています (アラートで)。しかし、ドロップダウンでは未定義になっています。