0
以下のコードはjson文字列をハードコードする場合に機能しますが、テンプレートをレンダリングするためにajax呼び出しから返されたjson文字列を渡すと機能しません。問題を見つけるのを手伝ってください。サーバー側でjqueryテンプレートがajaxデータからレンダリングされない
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配列をハードコードしているかのように正しいです。私はリストとテーブルを見ることができます。レスポンスコードが成功した場合、ロジックはエラー状態になりません。
「動作しません」とはどういう意味ですか?サーバーは何を返すのですか?レスポンスコードとは何ですか? – hvgotcodes
私は、表示しようとしているテーブルが表示されないことも意味します。ステータスコードも常に成功し、サーバはJSON文字列を返しています。また、dataTypeを変更して試してみてください: 'json' @hvgotcodes – Ayub
応答コードの200を確認しました。OK – Ayub