summaryrefslogtreecommitdiff
path: root/httemplate/elements/xmlhttp.html
blob: 425e28e3d437b9631aeead40b2f45e5796e179d3 (plain)
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
<%
  my ( $url, @subs ) = @_;

  $url .= ( ($url =~ /\?/) ? '&' : '?' ).
          'sub=';

%>

<SCRIPT TYPE="text/javascript">

  function rs_init_object() {
    var A;
    try {
      A=new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        A=new ActiveXObject("Microsoft.XMLHTTP");
      } catch (oc) {
        A=null;
      }
    }
    if(!A && typeof XMLHttpRequest != "undefined")
      A = new XMLHttpRequest();
    if (!A)
      alert("Can't create XMLHttpRequest object");
    return A;

  }

  <% foreach my $func (@subs) { 

       my $furl = $url . uri_escape($func);
       $furl =~ s/\"/\\\\\"/; #javascript escape

  %>

    function <%=$func%>() {
	// count args; build URL
	var url = "<%=$furl%>";
	var a = <%=$func%>.arguments;
	for (var i = 0; i < a.length-1; i++) 
	    url = url + "&arg=" + escape(a[i]);
	url = url.replace( /[+]/g, '%2B'); // fix the unescaped plus signs 
	var xmlhttp = rs_init_object();
	xmlhttp.open("GET", url, true);
	xmlhttp.onreadystatechange = function() {
	    if (xmlhttp.readyState != 4) 
		return;
	    //rs_debug("received " + x.responseText);

	    if (xmlhttp.status != 200) {
	      alert(xmlhttp.status + " status connecting to " + url);
	    } else {
              var data = xmlhttp.responseText;
              a[a.length-1](data);
            }
        }
        xmlhttp.send(null);
        //rs_debug("x_$func_name url = " + url);
        //rs_debug("x_$func_name waiting..");
    }

  <% } %>

</SCRIPT>