如果我对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数组进行硬编码一样,我能够看到列表和表格。响应代码成功,逻辑不会进入错误状态。
答案 0 :(得分:0)
使用var obj = jQuery.parseJSON(nameTex)解决了上述问题;