2012-01-28 47 views
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數組我能夠看到列表和表。響應代碼是成功的,邏輯不會進入錯誤狀態。

+0

'它不起作用'是什麼意思?什麼是服務器返回?響應代碼是什麼? – hvgotcodes 2012-01-28 20:52:11

+0

我的意思是我試圖顯示的表格也沒有顯示,狀態碼總是成功,服務器正在返回json字符串。也嘗試通過修改dataType:'json'@hvgotcodes – Ayub 2012-01-28 21:31:25

+0

檢查響應代碼其200,確定 – Ayub 2012-01-28 21:38:46

回答

0

通過使用var obj = jQuery.parseJSON(nameTex)解決了上述問題;