dhtmlxForm not loading data fast enough on busy server

Hello,

My dhtmlxForm is loading the data without any problems when I test it locally on my machine. However, on the server it does not load the data the first time I bring up the form. Sometimes it does and sometimes it doesn’t. This makes it appear to the users as though the data is not being saved although it is being saved. Any ideas?

Thanks

Hello
Provide us a direct link to your project, please.

Thanks, Darya, for your prompt reply. It’s not possible to give you the link to the project since it contains confidential data. However, here’s the code:

goalsPage2.jsp:

<%@ page language=“java” %>

<%@ include file = "../sessionTimeout.jsp" %>
<style>
    /* Override the default font-weight on the fieldset legend to make it bold */
    .dhxlist_obj_dhx_skyblue fieldset.dhxlist_fs legend.fs_legend {
		  font-weight: bold;
	}
</style>
Goals Domain 5 Objective <%=request.getParameter("objective")%>
------------------------------------------------------------------------------------------------------ goalsPage2Data.jsp: ------------------------ <%@ page language="java" contentType="text/xml; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="goals.*,java.util.*,db.*"%> <% Goals goals = GoalsController.retrieveGoals(request); String objective = request.getParameter("objective"); Map studentLearningObjectives = GoalsController.retrieveSlsForGoal(goals, objective); studentLearningObjectives.putAll(GoalsController.retrieveSlComponentsForGoal(goals, objective)); studentLearningObjectives.putAll(GoalsController.retrieveSlRatingsForGoal(goals, objective)); out.println(""); for (String key : studentLearningObjectives.keySet()) { String value = studentLearningObjectives.get(key); out.print("<" + key + ">"); out.print(value); out.println(""); } out.println(""); %> ------------------------------------------------------------------------------------------------------------- goalsPage2Form.jsp: ------------------------ <?xml version="1.0"?> <%@ page language="java" contentType="text/xml; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="db.*,goals.*"%> <% User loggedInUser = (User)session.getAttribute("user"); Goals goals = GoalsController.retrieveGoals(request); String objective = request.getParameter("objective"); String indicatorOptions = GoalsController.buildSloIndicatorOptions(goals, objective); %> <% if(!goals.isTeacherCommentsDisabled()) { %> <%=indicatorOptions %> <% } else { %> <% } %>
</item>
<item type="label">
	<item type="fieldset" label="Approval of Student Learning Objective (SLO)">
		<item type="label" name="labelslr" labelHeight="20" label="" position="label-left"/>
		<item type="label" name="labelslr1" labelHeight="20" label="Focus of SLO" position="label-left"/>
		<item type="label" name="labelslr2" labelHeight="20" label="Appropriateness of Population" position="label-left"/>
		<item type="label" name="labelslr3" labelHeight="20" label="Instructional Interval" position="label-left"/>
		<item type="label" name="labelslr4" labelHeight="20" label="Quality of Evidence" position="label-left"/>
		<item type="label" name="labelslr5" labelHeight="20" label="Rigor of Target" position="label-left"/>
		<item type="label" name="labelslr6" labelHeight="20" label="Expectations for Effectiveness" position="label-left"/>

		<item type="newcolumn" offset="50"/>
		<item type="label" name="accslr" labelHeight="20" label="Acceptable" position="label-left"/>
		<item type="radio" name="slr1" labelHeight="20" value="Y" label="" <%= goals.isTeacherCommentsDisabled() || loggedInUser.getPositionCd()!=2?"disabled='true' style='color:silver'":"" %>/>
		<item type="radio" name="slr2" labelHeight="20" value="Y" label="" <%= goals.isTeacherCommentsDisabled() || loggedInUser.getPositionCd()!=2?"disabled='true' style='color:silver'":"" %>/>
		<item type="radio" name="slr3" labelHeight="20" value="Y" label="" <%= goals.isTeacherCommentsDisabled() || loggedInUser.getPositionCd()!=2?"disabled='true' style='color:silver'":"" %>/>
		<item type="radio" name="slr4" labelHeight="20" value="Y" label="" <%= goals.isTeacherCommentsDisabled() || loggedInUser.getPositionCd()!=2?"disabled='true' style='color:silver'":"" %>/>
		<item type="radio" name="slr5" labelHeight="20" value="Y" label="" <%= goals.isTeacherCommentsDisabled() || loggedInUser.getPositionCd()!=2?"disabled='true' style='color:silver'":"" %>/>
		<item type="radio" name="slr6" labelHeight="20" value="Y" label="" <%= goals.isTeacherCommentsDisabled() || loggedInUser.getPositionCd()!=2?"disabled='true' style='color:silver'":"" %>/>
		<item type="newcolumn" offset="50"/>
		<item type="label" name="unaccslr" labelHeight="20" label="Unacceptable" position="label-left"/>
		<item type="radio" name="slr1" labelHeight="20" value="N" label="" <%= goals.isTeacherCommentsDisabled() || loggedInUser.getPositionCd()!=2?"disabled='true' style='color:silver'":"" %>/>
		<item type="radio" name="slr2" labelHeight="20" value="N" label="" <%= goals.isTeacherCommentsDisabled() || loggedInUser.getPositionCd()!=2?"disabled='true' style='color:silver'":"" %>/>
		<item type="radio" name="slr3" labelHeight="20" value="N" label="" <%= goals.isTeacherCommentsDisabled() || loggedInUser.getPositionCd()!=2?"disabled='true' style='color:silver'":"" %>/>
		<item type="radio" name="slr4" labelHeight="20" value="N" label="" <%= goals.isTeacherCommentsDisabled() || loggedInUser.getPositionCd()!=2?"disabled='true' style='color:silver'":"" %>/>
		<item type="radio" name="slr5" labelHeight="20" value="N" label="" <%= goals.isTeacherCommentsDisabled() || loggedInUser.getPositionCd()!=2?"disabled='true' style='color:silver'":"" %>/>
		<item type="radio" name="slr6" labelHeight="20" value="N" label="" <%= goals.isTeacherCommentsDisabled() || loggedInUser.getPositionCd()!=2?"disabled='true' style='color:silver'":"" %>/>

	</item>
</item>
<item type="label">
	<item type="fieldset" label="Domain 5 - Student Learning">
		<item type="settings" labelWidth="160" inputWidth="800" position="label-left"/>
		<item type="input" rows="2" name="slo1" label="Student Learning Objective" <%= goals.isTeacherCommentsDisabled()?"readonly='true' style='color:silver'":"" %>/>
		<item type="input" rows="2" name="slo2" label="Population" <%= goals.isTeacherCommentsDisabled()?"readonly='true' style='color:silver'":"" %>/>
		<item type="input" rows="2" name="slo3" label="Learning Content" <%= goals.isTeacherCommentsDisabled()?"readonly='true' style='color:silver'":"" %>/>
		<item type="input" rows="2" name="slo4" label="Instructional Interval" <%= goals.isTeacherCommentsDisabled()?"readonly='true' style='color:silver'":"" %>/>
		<item type="input" rows="2" name="slo5" label="Evidence of Growth" <%= goals.isTeacherCommentsDisabled()?"readonly='true' style='color:silver'":"" %>/>
		<item type="input" rows="2" name="slo6" label="Baseline" <%= goals.isTeacherCommentsDisabled()?"readonly='true' style='color:silver'":"" %>/>
		<item type="input" rows="2" name="slo7" label="Rational for SLO" <%= goals.isTeacherCommentsDisabled()?"readonly='true' style='color:silver'":"" %>/>
		<item type="input" rows="2" name="slo8" label="Target" <%= goals.isTeacherCommentsDisabled()?"readonly='true' style='color:silver'":"" %>/>

		<item type="label" >
			<item type="label"  labelWidth="140"/>
			<item type="newcolumn"/>
			<item type="fieldset" label="Criteria for Effectiveness">
				<item type="settings" labelWidth="160" inputWidth="200" position="label-top"/>
				<item type="input" rows="2" name="slo9" label="Highly Effective" <%= goals.isTeacherCommentsDisabled()?"readonly='true' style='color:silver'":"" %>/>
				<item type="newcolumn" offset="50"/>
				<item type="input" rows="2" name="slo10" label="Effective" <%= goals.isTeacherCommentsDisabled()?"readonly='true' style='color:silver'":"" %>/>
				<item type="newcolumn" offset="50"/>
				<item type="input" rows="2" name="slo11" label="Ineffective" <%= goals.isTeacherCommentsDisabled()?"readonly='true' style='color:silver'":"" %>/>
			</item>			
		</item>
		<item type="input" rows="2" name="slo12" label="Strategies" <%= goals.isTeacherCommentsDisabled()?"readonly='true' style='color:silver'":"" %>/>
		
	</item>
</item>

Java methods:

/**
 * Retrieves the goal_sl records for the specified goal and objective
 * @param goals
 * @param objective
 * @return
 */ 
public static Map<String,String> retrieveSlsForGoal(Goals goal,String objective)
{
	Map<String,String> studentLearningObjectives = new HashMap<String,String>();
	Integer objectiveInteger = Integer.parseInt(objective);
			
	Connection conn = null;
	conn = null;
	PreparedStatement stmt = null;

	String sql = 
			"select gs.*, i.teacher_description\n" +
					"  from goal_sl gs\n" + 
					"  left outer join lktbl_indicator i on i.indicator_cd = gs.indicator\n" + 
					" where goal_id = ?\n" + 
					"   and objective = ?";

	try
	{
		conn = DB.getConnection();
		Integer[] sqlArgs = new Integer[]{new Integer(goal.getGoalId()),objectiveInteger};
		int[] argTypes = new int[]{Types.INTEGER,Types.INTEGER};
		stmt = DB.getPreparedStatement(conn, sql, sqlArgs, argTypes);
		stmt.execute();
		ResultSet rs = stmt.getResultSet();
		
		while(rs.next())
		{			
			studentLearningObjectives.put("indicator", rs.getString("indicator"));
			studentLearningObjectives.put("approved", Boolean.toString(rs.getBoolean("approved")));
			studentLearningObjectives.put("indicatorDescription", rs.getString("teacher_description"));
			
		}
		rs.close();
	}
	catch (SQLException ex)
	{
		ex.printStackTrace();
	}
	finally
	{
		DB.closeStatement(stmt);
		DB.closeConnection(conn);
	}

	return studentLearningObjectives;
}


/**
 * Retrieves the goal_slcomponent records for the specified goal and objective
 * @param goals
 * @param objective
 * @return 
 */
public static Map<String,String> retrieveSlComponentsForGoal(Goals goal,String objective)
{
	Map<String,String> slComponents = new HashMap<String,String>();
	Integer objectiveInteger = Integer.parseInt(objective);
			
	Connection conn = null;
	conn = null;
	PreparedStatement stmt = null;

	String sql = "select * from goal_slcomponent where goal_id = ? and objective = ?";
	try
	{
		conn = DB.getConnection();
		Integer[] sqlArgs = new Integer[]{new Integer(goal.getGoalId()),objectiveInteger};
		int[] argTypes = new int[]{Types.INTEGER,Types.INTEGER};
		stmt = DB.getPreparedStatement(conn, sql, sqlArgs, argTypes);
		stmt.execute();
		ResultSet rs = stmt.getResultSet();
		
		while(rs.next())
		{			
			String componentCd = "slo" + rs.getInt("slcomponent_cd");
			String componentComments = DB.clobToString(rs.getClob("component_comments"));
			// default the criteria for effectiveness
			if(componentComments==null || componentComments.length()==0) {
				switch (rs.getInt("slcomponent_cd")) {
					case 9: 	componentComments = "More than 90% of students meet agreed upon learning targets."; 
								break;
					case 10: 	componentComments = "Between 75% and 90% of students meet agreed upon learning targets."; 
								break;
					case 11: 	componentComments = "Less then 75% of students meet agreed upon learning targets."; 
								break;
					default: 	componentComments = "";
								break;
				}
			}
			slComponents.put(componentCd,componentComments);
		}
		rs.close();
	}
	catch (SQLException ex)
	{
		ex.printStackTrace();
	}
	finally
	{
		DB.closeStatement(stmt);
		DB.closeConnection(conn);
	}

	return slComponents;
}


/**
 * Retrieves the goal_slrating records for the specified goal and objective
 * @param goals
 * @param objective
 * @return 
 */
public static Map<String,String> retrieveSlRatingsForGoal(Goals goal,String objective)
{
	Map<String,String> slRatings = new HashMap<String,String>();
	Integer objectiveInteger = Integer.parseInt(objective);
			
	Connection conn = null;
	conn = null;
	PreparedStatement stmt = null;

	String sql = "select * from goal_slrating where goal_id = ? and objective = ?";
	try
	{
		conn = DB.getConnection();
		Integer[] sqlArgs = new Integer[]{new Integer(goal.getGoalId()),objectiveInteger};
		int[] argTypes = new int[]{Types.INTEGER,Types.INTEGER};
		stmt = DB.getPreparedStatement(conn, sql, sqlArgs, argTypes);
		stmt.execute();
		ResultSet rs = stmt.getResultSet();
		
		while(rs.next())
		{			
			String ratingCd = "slr" + rs.getInt("slorating_cd");
			String rating = rs.getString("acceptable");
			slRatings.put(ratingCd,rating);
		}
		rs.close();
	}
	catch (SQLException ex)
	{
		ex.printStackTrace();
	}
	finally
	{
		DB.closeStatement(stmt);
		DB.closeConnection(conn);
	}

	return slRatings;
}

On this way we need your completed demo (you may not include your confidential data)
docs.dhtmlx.com/doku.php?id=othe … leted_demo
Just html could’t help us to reproduce your issue.

In case someone is encountering the same problem and is looking for a solution, below is how I resolved my issue.

I combined these two calls into one and that solved the problem:

dhxForm.loadStruct("<%=request.getContextPath()%>/goals/goalsPage2Form.jsp?goalId=<%=request.getParameter(“goalId”)%>&objective=<%=request.getParameter(“objective”)%>");
document.body.style.cursor=“wait”;

dhxForm.load(’<%=request.getContextPath()%>/goals/goalsPage2Data.jsp?goalId=<%=request.getParameter(“goalId”)%>&objective=<%=request.getParameter(“objective”)%>’,function(id, response){
document.body.style.cursor=“default”;
});

The dhxForm.loadStruct was loading the form structure and objects, and the dhxForm.load call was loading the data. I basically did away with the dhxForm.load call and I included the data in the dhxForm.loadStruct call.