我有一个对servlet的ajax调用,它在服务器端构造一个HTML下拉列表并将其返回到客户端,即jQuery Ajax调用。那么如何得到回应。我的Ajax调用是:
$.ajax({
type : "GET",
url : "/tool/updateTagMap",
data : "submit=getTagList",
datatype : "json",
success : function(data) {
alert(data);
}
});
服务器端代码
else if ("getTagList".equalsIgnoreCase(submit)) {
List<Tag> tagList = DBUtil.getTagList();
String tagCombo ="<select name='tagId' class='tagIdClass'>";
for(Tag tag : tagList ){
tagCombo += "<option value=" + tag .getTagId() +">"+ tag.getTag()+ "</option>";
}
tagCombo += " </select>";
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(tagCombo);
}
但是在警报中我得到了整个HTML?任何的想法?如何获取下拉html?
答案 0 :(得分:1)
就像你有一个id =“dummydiv”的div
你可以在变量数据中得到ajax的响应 那么你需要这样做。 $( '#dummydiv')的html(数据);
答案 1 :(得分:0)
您误解了Ajax成功查询,JSON返回对象以及如何将其应用于网页的文档对象模型之间的关系。
在你的ajax方法中,你有一行
dataType : "json"
这告诉jQuery.ajax()
期望以格式
{
key0 : value0,
key1 : value 1,
... : ...
keyn : value n
}
为了将此应用于DOM,假设您的页面上有以下HTML:
<div id = 'select_container'
<select id = 'dropdown_select'></select>
</div>
如果您的JSON返回有效,您可以在success
函数中执行与
success : function(data){
var appendString = "";
for (var i = 0; i < data.length; i++)
appendString += "<option id = 'option_" + i + "' >" + data[i].value + "</option>";
$("#dropdown_select").append(appendString);
}
此示例接收有效的JSON返回对象,构建一个有效HTML字符串,并使用append()
方法将其应用于选择下拉列表。如果列表为空,则成功函数的内容将从0 .. n应用,但如果列表已有选项值,则新元素将添加到下拉选择选项的末尾。
您的问题是您在Ajax查询方法中返回HTML。转换它以将名称,ID和其他信息返回到有效的JSON中,以应用受此查询影响的DOM元素。