jquery模板不是从ajax数据呈现的

时间:2012-01-28 20:46:16

标签: ajax json jquery-templates

如果我对json字符串进行硬编码,下面的代码就可以工作,但是如果我传递从ajax调用返回的json字符串来渲染模板,它就不起作用了。请帮我找到问题。

   function getData(orgId){

   $.template("EmployeeTemplate","<tr><td colspan='2'>${name}</td> 
    <td colspan='2'>${id}</td> <td colspan='2'>${jobTitle}</td></tr>");

    var gUrl = "/JQueryMobileApp/HRServlet?action=employee&orgId="+orgId;

    // Do the ajax call 
    $.ajax({ 
      url: gUrl, 
      dataType:'json',
      // Callback (onsuccess) 
      success: function(d){ 

       var jsonData = eval( d); 

       var nameText=jsonData.empNames;
       //nameText=[{name:"abc",id:"1"},{name:"pqr",id:"2"}];
       $.tmpl( "EmployeeTemplate", nameText ).appendTo( "#employeeList" );
      alert(nameText);

      }, 
      // Error handler 
      error: function(req, status, err){ 
        alert('error getting name');
        var group_list = document.getElementById("orgTree"); 

      } 
    }); 
     }

服务器端的代码:

                PrintWriter out = response.getWriter(); 
        response.setContentType("application/json");
        JSONObject obj1=new JSONObject();
       if(request.getParameter("action").equals("employee")){

            String orgId=request.getParameter("orgId");

        List<EmployeeVO> name=access.getEmployeeListInOrganization(orgId);

        Gson gson = new Gson();
        String json=gson.toJson(name);
        obj1.put("empNames",json);


        out.print(obj1); 
        out.flush();
                   }

我使用相同的方法填充一个文本框,其中包含从ajax调用返回的员工姓名,我看到它正在填充。但是,如果返回类型是json数组,我无法显示它。显示逻辑是正确的,就像我对json数组进行硬编码一样,我能够看到列表和表格。响应代码成功,逻辑不会进入错误状态。

1 个答案:

答案 0 :(得分:0)

使用var obj = jQuery.parseJSON(nameTex)解决了上述问题;