Computer

Javascript Ajax/XMLHttpRequest

A simple implementation to use Ajax.

ajax.js
// v.1   - 2016-08-29
var ajax = function (method, url, post, callback, data) {
	var xhr = null;
	if(xhr == null) { try { xhr = new XMLHttpRequest();                    } catch(e) { } }
	if(xhr == null) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch(e) { } }
	if(xhr == null) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch(e) { } }
	if(xhr == null) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP");     } catch(e) { } }
	if(xhr == null) { try { xhr = new ActiveXObject("Microsoft.XMLHTTP");  } catch(e) { } }
	if(xhr != null) {
		try {
			if(typeof(callback) == "function") xhr.onreadystatechange = function() {
				console.log("[AJAX] xhr.readyState = " + xhr.readyState + " / xhr.status = " + xhr.status);
				if(xhr.readyState == 4) { 
					try {
						callback(xhr, data);
					} catch(e) {
						console.log("[AJAX] Callback error: " + e.message);
					}
					delete xhr;
					xhr = null;
				}
			};
			console.log("[AJAX] Request: " + url);
			xhr.open(method, url, true);
			if(post) {
				// WebService: application/soap+xml; charset=utf-8
				// Form: application/x-www-form-urlencoded
				xhr.setRequestHeader("Content-Type", "application/soap+xml; charset=utf-8");
			}
			xhr.send(post);
		} catch(e) {
			console.log("[AJAX] Ajax error: " + e.message);
			delete xhr;
			xhr = null;
		}
	}
	return (xhr == null);
};

example.html
// v.1   - 2016-08-29
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>AJAX</title>
		<script type="text/javascript" src="ajax.js"></script>
	</head>
	<body>
		<table border="0">
			<tr><td>URL:</td>         <td><input type="text" id="url"      value="http://www.example.com/script.php" size="54" /></td></tr>
			<tr><td>Vars:</td>        <td><input type="text" id="vars"     value='{ foo: "bar" }'                    size="54" /></td></tr>
			<tr><td>File name:</td>   <td><input type="text" id="filename" value="filename.ext"                      size="54" /></td></tr>
			<tr><td>File content:</td><td><textarea id="filecontent" cols="40" rows="10">File content...</textarea></td></tr>
		</table>
		<br />
		<code id="cmd"></code><br />
		<button onclick="document.getElementById('resultStatus').innerText = document.getElementById('resultText').innerText = ''; eval(document.getElementById('cmd').innerText);">Send</button><br />
		<br />
		<fieldset>
			<legend>result</legend>
			<div id="resultStatus"></div>
			<div id="resultText"></div>
		</fieldset>
		<script type="text/javascript">
			var url         = document.getElementById("url");
			var vars        = document.getElementById("vars");
			var filename    = document.getElementById("filename");
			var filecontent = document.getElementById("filecontent");
			function update()
			{
				var url         = document.getElementById("url");
				var vars        = document.getElementById("vars");
				var filename    = document.getElementById("filename");
				var filecontent = document.getElementById("filecontent");
				var cmd         = document.getElementById("cmd");
				cmd.innerText = 'send(\n' +
					'  "' + url.value + '",\n' +
					'  ' + vars.value + ',\n' +
					'  "' + filename.value + '",\n' +
					'  "' + filecontent.value + '",\n' +
					'  function(xhr) {\n' +
					'    document.getElementById("resultStatus").innerText = xhr.status;\n' +
					'    document.getElementById("resultText"  ).innerText = xhr.responseText;\n' +
					'  }\n' +
					');'
				;
			}
			url.onkeyup = vars.onkeyup = filename.onkeyup =  filecontent.onkeyup = update;
			update();
		</script>
	</body>
</html>
USE IT AT YOUR OWN RISK!
Kudos: 0 [Give a kudo]

12r6j5xasef5Z6Sm4A6oBpMLn2ESPPX6ym
Ads: