Skip to content

Instantly share code, notes, and snippets.

@muthuishere
Last active January 24, 2018 03:31
Show Gist options
  • Save muthuishere/3f2ed9ed592ca34432b7 to your computer and use it in GitHub Desktop.
Save muthuishere/3f2ed9ed592ca34432b7 to your computer and use it in GitHub Desktop.
Javascript Helpers: Check variable is Number , Generic Ajax request , Serialize form data
//Check string is number
function isNumber(n) {
if(undefined == n || null == n)
return false
else
return /^-?[\d.]+(?:e-?\d+)?$/.test(n);
}
//Ajax request using plain javascript
var ajax = {};
ajax.x = function () {
if (typeof XMLHttpRequest !== 'undefined') {
return new XMLHttpRequest();
}
var versions = [
"MSXML2.XmlHttp.6.0",
"MSXML2.XmlHttp.5.0",
"MSXML2.XmlHttp.4.0",
"MSXML2.XmlHttp.3.0",
"MSXML2.XmlHttp.2.0",
"Microsoft.XmlHttp"
];
var xhr;
for (var i = 0; i < versions.length; i++) {
try {
xhr = new ActiveXObject(versions[i]);
break;
} catch (e) {
}
}
return xhr;
};
ajax.send = function (url, callback, method, data, async) {
if (async === undefined) {
async = true;
}
var x = ajax.x();
x.open(method, url, async);
x.onreadystatechange = function () {
if (x.readyState == 4) {
callback(x.responseText)
}
};
if (method == 'POST') {
x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
}
x.send(data)
};
ajax.get = function (url, data, callback, async) {
var query = [];
for (var key in data) {
query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
}
ajax.send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null, async)
};
ajax.post = function (url, data, callback, async) {
var query = [];
for (var key in data) {
query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
}
ajax.send(url, callback, 'POST', query.join('&'), async)
};
//Serialize form
function serialize(form) {
if (!form || form.nodeName !== "FORM") {
return
}
var i, j, q = [];
for (i = form.elements.length - 1; i >= 0; i = i - 1) {
if (form.elements[i].name === "") {
continue
}
switch (form.elements[i].nodeName) {
case "INPUT":
switch (form.elements[i].type) {
case "text":
case "hidden":
case "password":
case "button":
case "reset":
case "submit":
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
break;
case "checkbox":
case "radio":
if (form.elements[i].checked) {
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value))
}
break;
case "file":
break
}
break;
case "TEXTAREA":
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
break;
case "SELECT":
switch (form.elements[i].type) {
case "select-one":
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
break;
case "select-multiple":
for (j = form.elements[i].options.length - 1; j >= 0; j = j - 1) {
if (form.elements[i].options[j].selected) {
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].options[j].value))
}
}
break
}
break;
case "BUTTON":
switch (form.elements[i].type) {
case "reset":
case "submit":
case "button":
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
break
}
break
}
}
return q.join("&")
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment