API Overview API Index Package Overview Direct link to this page
JavaOnTracks 0.1.2
  net.jot.web.ajax. JOTAjaxHelper View Javadoc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

/*
 * JavaOnTrack/Jotwiki
 * Thibaut Colar.
 * tcolar-jot AT colar  DOT net
 */
package net.jot.web.ajax;

import net.jot.web.*;

/**
 *
 * @author thibautc
 */
public class JOTAjaxHelper {

    public static String getStandardAjaxJscriptFuncName(JOTAjaxProvider ajaxProvider, int id)
    {
        return "jot_ajax_" + ajaxProvider.getClass().getSimpleName() + "_" + id;
    }

    /**
     * Returns a standrad ajax call piece of javascript(no javascript tag) for an AjaxProvider.
     * see JOTExampleWidget for example 
     * @param ajaxProvider
     * @param id : unique id for this widget on the page
     * @return
     */
    public static String getAjaxJavascript(JOTAjaxProvider ajaxProvider, int id)
    {
        String functionName = ajaxProvider.getJscriptFuncName();
        String jscript = "// AJAX request object \n";
        jscript += "var req_" + id + "; if (typeof XMLHttpRequest != 'undefined') {req_" + id + " = new XMLHttpRequest();} else if (window.ActiveXObject) {req_" + id + " = new ActiveXObject('Microsoft.XMLHTTP');}\n";

        jscript += "\n// AJAX GET CALL\n";
        jscript += "function " + functionName + "() {";
        // TODO: use args ?
        //jscript+=       "var idField = document.getElementById(elemId);";
        jscript += "var url = '" + ajaxProvider.getAjaxAction() + "';";//+"?xxx=' + encodeURIComponent(idField.value);\n";
        jscript += "req_" + id + ".open('GET', url, true);";
        jscript += "req_" + id + ".onreadystatechange = " + ajaxProvider.getJscriptCallbackFunctionName() + ";";
        jscript += "req_" + id + ".send(null);";
        jscript += "}\n";
        
        jscript += "\n// AJAX FORM PUT CALL : formId: ID of the html form element to submit\n";
        jscript += "function " + functionName + "_form(formId) {";
        jscript += "var url = '" + ajaxProvider.getAjaxAction() + "';";
        jscript += "var params='';";
        jscript += "var form = document.getElementById(formId);";
        jscript += "var elems = form.getElementsByTagName('input');";
        jscript += "for(var i__JOT_PIECE_15__;i!=elems.length;i++){";
        jscript += "  if(!elems[i].disabled && elems[i].name!=''){";
        jscript += "    params+=escape(encodeURI(elems[i].name))+'='+escape(encodeURI(elems[i].value))+'&';";
        jscript += "  }";
        jscript += "}";
        jscript += "var elems = form.getElementsByTagName('select');";
        jscript += "for(var i__JOT_PIECE_16__;i!=elems.length;i++){";
        jscript += "  for(var j=0;j!=elems[i].options.length;j++){";
        jscript += "    if(!elems[i].disabled && elems[i].options[j].selected){params+=encodeURI(elems[i].name)+'='+escape(encodeURI(elems[i].options[j].value))+'&';}";
        jscript += "  }";
        jscript += "}";
        //jscript += "alert(params);";
        jscript += "req_" + id +".open('POST', url, true);";
        jscript += "req_" + id +".onreadystatechange = " + ajaxProvider.getJscriptCallbackFunctionName() +";";
        jscript += "req_" + id +".setRequestHeader('Content-type', 'application/x-www-form-urlencoded');";
        jscript += "req_" + id +".setRequestHeader('Content-length', url.length);";
        jscript += "req_" + id +".setRequestHeader('Connection', 'close');";
        jscript += "req_" + id +".send(params);";
        jscript += "}\n";
        
        return jscript;
    }

    /**
     * Build a standard javascript callback method, checking ajax status etc....
     * Adds your custom callback jscript code in it (warps it)
     * see JOTExampleWidget for example 
     * @param innerJavascript
     * @param id
     * @return
     */
    public static String buildStandardCallbackJscript(String innerJavascript, int id)
    {
        String js = "";
        js += "if (req_" + id + ".readyState ==__JOT_PIECE_18__) {";
        js += "if (req_" + id + ".status ==__JOT_PIECE_19__) {";
        js += innerJavascript;
        js += "}}";
        return js;
    }

    /**
     * Return piece of javascript code setting a jscript variable(jscriptVarName) with the value of a variable(ajaxVarName) stored in the ajax 'XML' response
     * see JOTExampleWidget for example 
     * @param varName
     * @param uniqueId
     * @return
     */
    public static String setJscriptVarValueFromAjaxVar(String jscriptVarName, String ajaxVarName, int uniqueId)
    {
        return "var root = req_" + uniqueId + ".responseXML.getElementsByTagName('root').item(0);var " + jscriptVarName + " = root.getElementsByTagName('" + ajaxVarName + "')[0].childNodes[0].nodeValue;";
    }

    /**
     * Return piece of javascript code setting an htmlElement(called htmlElemName) 'innerHTML' to the value of 'jscriptVarName'
     * see JOTExampleWidget for example
     * @param htmlElemName
     * @param uniqueId
     * @param jscriptVarName
     * @return
     */
    public static String setElementInnerValue(String htmlElemName, int uniqueId, String jscriptVarName)
    {
        return "document.getElementById('" + htmlElemName + (uniqueId==-1?"":("_"+ uniqueId)) + "').innerHTML = " + jscriptVarName + ";";
    }
}

Generated By: JavaOnTracks Doclet 0.1.5     ©Thibaut Colar