A package for the DOM - Ajax Provides 3 types of normal ajax - get, post, and post for form data.

Also provides serialized ajax (get style) using a queue.

Please review the correctness of this code.

/**************************************************************************************************
AJAX
*/

// ... snip
    Pub.ajax = function (config_ajax) {
        var xhr;

        // get
        if (config_ajax.type === 'get') {
            xhr = new win.XMLHttpRequest();
            xhr.open('GET', config_ajax.url, true);
            xhr.onload = function () {
                if (this.status === 200) {
                    config_ajax.callback(xhr.responseText);
                }
            };
            xhr.send(null);
        }

        // post
        if (config_ajax.type === 'post') {
            xhr = new win.XMLHttpRequest();
            xhr.open("POST", config_ajax.url, true);
            xhr.setRequestHeader("Content-type",
                    "application/x-www-form-urlencoded");
            xhr.onload = function () {
                if (this.status === 200) {
                    config_ajax.callback(xhr.responseText);
                }
            };
            xhr.send(config_ajax.data);
        }

        // post for form_data
        if (config_ajax.type === 'multi') {
            xhr = new win.XMLHttpRequest();
            xhr.open("POST", config_ajax.url, true);
            xhr.onload = function () {
                if (this.status === 200) {
                    config_ajax.callback(xhr.responseText);
                }
            };
            xhr.send(config_ajax.data);
        }
    };

    // queue used for serial ajax
    Priv.Queue = (function () {
        var queue = [],
            publik = {};
        function getIndexFromToken(callback) {
            var hold;
            $A.someIndex(queue, function (val, index) {
                if (val.callback === callback) {
                    hold = index;
                    return index;
                }
            });
            return hold;
        }
        function getBlockedProperty(item) {
            var blocked;
            if (item) {
                blocked = item.blocked;
            } else {
                blocked = false;
            }
            return blocked;
        }
        publik.addItem = function (callback) {
            var temp = {};
            temp.blocked = false;
            temp.callback = callback;
            temp.response_text = null;
            queue.push(temp);
        };
        publik.itemCompleted = function (response_text, callback) {
            var index,
                item,
                blocked;
            index = getIndexFromToken(callback);
            if (index !== 0) {
                queue[index].blocked = true;
                queue[index].response_text = response_text;
            } else {
                item = queue.shift();
                item.callback(response_text);
                blocked = getBlockedProperty(queue[0]);
                while (blocked) {
                    item = queue.shift();
                    item.callback(item.response_text);
                    blocked = getBlockedProperty(queue[0]);
                }
            }
        };
        return publik;
    }());

    // serial ajax
    // unlike normal ajax the ordering is guaranteed
    Pub.serialAjax = function (source, callback) {
        Priv.Queue.addItem(callback);
        Pub.ajax({
            type:       'get',
            url:        source,
            callback:   function (response_text) {
                Priv.Queue.itemCompleted(response_text, callback);
            }
        });
    };
// ... snip
From a once-over:


You keep creating the same function in Pub.ajax:

    xhr.onload = function () {
        if (this.status === 200) {
            config_ajax.callback(xhr.responseText);
        }
    };


You could consider assigning this function once to a var onloadFunction which you then assign like this : xhr.onload = onloadFunction. On the whole, Pub.ajax needs to be reviewed by you with DRY in mind.
getBlockedProperty could be written in a much shorter fashion:

function getBlockedProperty(item) {
  return item ? item.blocked : false;
}

getIndexFromToken is odd, I have no idea what it really does, not a single variable or parameter is called token and there is not a single line of comment.
publik.addItem could use Object Literal Notation to make it more succint:

publik.addItem = function (callback) {
    var temp = {
      blocked : false;
      callback : callback;
      response_text : null;
    };
    queue.push(temp);
};

lowerCamelCasing -> You are not using it everywhere
A minor observation, would it not be much easier to just send synchronous requests instead of building a custom queue ?