如何通过jQuery从servlet获取HTML内容到ajax成功调用

时间:2013-09-12 09:36:33

标签: jquery ajax

我有一个对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?

2 个答案:

答案 0 :(得分:1)

就像你有一个id =“dummydiv”的div     

你可以在变量数据中得到ajax的响应 那么你需要这样做。      $( '#dummydiv')的html(数据);

答案 1 :(得分:0)

您误解了Ajax成功查询,JSON返回对象以及如何将其应用于网页的文档对象模型之间的关系。

在你的ajax方法中,你有一行

dataType : "json"

这告诉jQuery.ajax()期望以格式

格式返回Javascript Object Notation对象的格式
{
  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元素。