Source of reTest.php
<?
require("Sajax_json.php");
sajax_init();
sajax_export("reTest");
sajax_handle_client_request();
function reTest() {
ob_start();
?>
<script language="javascript">
<!-- // hide from whatever
function checkPhoneNumber(phoneNo) {
/*
* manually add the additional slash
* so... \( becomes \\(
*/
var phoneRE = /^\\(\\d\\d\\d\\) \\d\\d\\d-\\d\\d\\d\\d$/;
alert('phoneRE: '+phoneRE+' vs. '+phoneNo+'');
if(phoneNo.match(phoneRE)) {
alert("The phone number entered is valid!");
return true;
} else {
alert("The phone number entered is invalid!");
return false;
}
}
// -->
</script>
Phone Number: <input type="text" id="pn">
<button onclick="checkPhoneNumber(getElem('pn').value)">Check</button>
<?
$html = ob_get_contents();
ob_end_clean();
return setData('testDiv',$html);
}
function fix_html($html) {
$patterns = array(
"/\n/",
"/\r/"
);
$replace = array(
"\\n",
"\\r"
);
$fix = addslashes($html);
$fix = preg_replace($patterns,$replace,$fix);
return $fix;
}
function setData($div,$data='',$error='') {
$html = "sethtml('{$div}','" . fix_html($data) . "');";
return $html;
}
?>
<html>
<head>
<title>Testing something</title>
<script language="javascript">
<!-- // hide from older browsers
<? sajax_show_javascript() ?>
function getElem(myId) {
return document.getElementById(myId);
}
function sethtml(div,content) {
var search = content;
var script;
var is_singleq = 0; var singleq = "'";
var is_doubleq = 0; var doubleq = '"';
var is_escaped = 0; var escap = "\\";
var layer = 0;
while( script = search.match(/(<script[^>]+javascript[^>]+>\s*(<!--)?)/)) {
search = search.substr(search.indexOf(RegExp.$1) + RegExp.$1.length);
if (!(endscript = search.match(/((-->)?\s*<\/script>)/))) break;
block = search.substr(0, search.indexOf(RegExp.$1));
search = search.substring(block.length + RegExp.$1.length);
while(func = block.match(/(function(.+?)\((.*?)\)\s*\{)/)) {
eval(block.substr(0,block.indexOf(RegExp.$1)));
// for evaluating non functions
block = block.substr(block.indexOf(RegExp.$1) + RegExp.$1.length);
name = RegExp.$2;
param = RegExp.$3;
is_singleq = 0;
is_doubleq = 0;
is_escaped = 0;
layer = 0;
for(i=0;i<block.length;i++) {
c = block.substr(i,1);
if ((is_singleq || is_doubleq) && is_escaped) {
is_escaped = 0;
} else if (!is_doubleq && (c==singleq)) {
is_singleq = !is_singleq;
} else if (!is_singleq && (c==doubleq)) {
is_doubleq = !is_doubleq;
} else if ((is_singleq || is_doubleq) && (c==escap)) {
is_escaped = 1;
} else if ( c=="{") {
layer++;
} else if ( c=="}") {
if ( layer==0 ) {
break;
}
layer--;
}
}
code = block.substr(0,i-1);
block = block.substr(i +1);
code = code.replace(/\n/g, '\\n');
code = code.replace(/\r/g, '\\r');
code = code.replace(/'/g,"\\'");
code = code.replace(/"/g,'\\"');
eval(name + " = new Function('"+param+"','"+code+"');");
}
eval(block); // for evaluating non functions
}
document.getElementById(div).innerHTML=content;
}
function do_cb(result) {
eval(result);
}
// -->
</script>
</head>
<body>
<button onclick="x_reTest(do_cb);">Do Test</button>
<div id='testDiv'></div>
</body>
</html>