uri = cgi.query_string;
if (find(uri,"?") gt 0)
uri = uri & "?rs=" & urlencodedformat(func_name);
else
uri = uri & "&rs=" & urlencodedformat(func_name);
uri = cgi.script_name & uri;
// wrapper for #func_name#
function x_#func_name#() {
// count args; build URL
sajax_do_call("#func_name#",
"#sajax_esc(uri)#",
x_#func_name#.arguments);
}
// remote scripting library
// (c) copyright 2005 modernmethod, inc
var sajax_debug_mode = #iif(sajax_debug_mode,'"true"','"false"')#;
function sajax_debug(text) {
if (sajax_debug_mode)
alert("RSD: " + text)
}
function sajax_init_object() {
sajax_debug("sajax_init_object() called..")
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)
sajax_debug("Could not create connection object.");
return A;
}
function sajax_do_call(func_name, url, args) {
var i, x, n,responseText;
url = url + "&rsargs=";
for (i = 0; i < args.length-1; i++)
url = url + escape(args[i]) + escape("#JSStringFormat(sajax_url_array_delim)#");
url = url + "&rsrnd=" + new Date().getTime();
x = sajax_init_object();
x.open("GET", url, true);
x.onreadystatechange = function() {
if (x.readyState != 4)
return;
responseText = x.responseText.replace(/^\s+/,''); // remove leading space, cf loves to put extra whitespace.
sajax_debug("received " + responseText);
var status;
var data;
status = responseText.charAt(0);
data = responseText.substring(1);
if (status == "-")
alert("Error: " + data);
else
args[args.length-1](data);
}
x.send(null);
sajax_debug(func_name + " url = " + url);
sajax_debug(func_name + " waiting..");
delete x;
}
var func_name="";
var result=0;
if(not isdefined("url.rs"))
return;
func_name = url['rs'];
if(not ListFindNoCase(sajax_export_list, func_name))
writeoutput("-:#func_name# not callable");
else {
writeoutput("+");
if(not isdefined("url.rsargs"))
result = call_user_func(url['rs']);
else
result = call_user_func_array(url['rs'], get_url_array(url['rsargs']));
if(isdefined("result"))
writeoutput(result);
}
if(sajax_test_mode eq 0)
exit();
#output#
-#cfcatch.type#
#cfcatch.message#
#cfcatch.detail#
in #cfcatch.tagcontext[1].template# at #cfcatch.tagcontext[1].line#
sajax_debug_mode = 0;
sajax_test_mode = 0;
sajax_export_list = "";
sajax_url_array_delim = chr(31);
function call_user_func(user_func) {
return(call_user_func_array(user_func,arraynew(1)));
}
function sajax_export() {
var keys = structkeylist(arguments);
var size = listlen(keys);
var key = "";
for(i =1; i lte size;i=i+1) {
key = listgetat(keys,i);
sajax_export_list = listappend(sajax_export_list,arguments[key]);
}
}
function call_user_func_array(user_func, arg_array) {
var func_call = "";
var func_args = "";
var size = ArrayLen(arg_array);
/* Loop though each of the args */
for(i=1; i lte size; i = i + 1) {
func_args = func_args & "arg_array[#i#]";
if(i lt size)
func_args = func_args & ",";
}
return(evaluate("#user_func#(#func_args#)"));
}
function get_url_array(url_array) {
return(ListToArray(url_array,sajax_url_array_delim));
}
function set_url_array(array) {
return(ArrayToList(array,sajax_url_array_delim));
}
function sajax_init() {
}
function sajax_show_common_js() {
sajax_get_common_js();
}
// javascript escape a value
function sajax_esc(val)
{
return(jsstringformat(val));
}
function sajax_show_one_stub(func_name) {
sajax_get_one_stub(func_name);
}
sajax_js_has_been_shown = 0;
function sajax_get_javascript()
{
if (not sajax_js_has_been_shown) {
sajax_get_common_js();
sajax_js_has_been_shown = 1;
}
size = listlen(sajax_export_list);
for(i = 1; i lte size; i=i+1) {
func = listgetat(sajax_export_list,i);
sajax_get_one_stub(func);
}
}
function sajax_show_javascript()
{
sajax_get_javascript();
}
SAJAX_INCLUDED = 1;