проблему решил?
у меня небыло проблел, первые посты прочитай.
ebalazhabagadyuku, были, Get отправлял null.
Я просто только глаза открыл, не обращай пока на меня внимания.
[code]// if GET method
else {
XMLHttpRequest.open(args.method, args.url + '?' + args.vars, true);
//
XMLHttpRequest.send(null);[/code]
ebalazhabagadyuku, да какая разница на что смахивает? Главное функционал и удобство. А передавать параметры объектом куда удобнее, чем руками формировать строку при каждом вызове функции. Формирование строки параметров тоже действие, которое придется повторять при каждом использовании функции! Но ведь смысл функции в том, чтобы избежать повторений кода.
Добавлено 29.07.14 в 12:07:58:
Ох и навели тут офтопа Завязывайте, тема ещё не закрыта, а значит есть что обсудить ПО ТЕМЕ.
А твоя задача, как программиста, не выучивать всё подряд, а быть в курсе, знать, что есть и при необходимости применять. А насчёт мозга - уж поверь, он куда эффективнее сервера!
ebalazhabagadyuku,
А что касается отдельного контейнера для ошибок, так это куда удобнее, чем в контейнер для контента выводить. Во-первых, ты каждый контейнер ты можешь навесить соответствующие стили (ошибки обычное делают красными, так чтобы они сразу бросались в глаза). Во-вторых, сообщение об ошибке может понадобиться организовать всплывающим диалогом или ещё как... вариантов может быть много.
Как вариант, я вижу возможность совместить оба варианта: в функции проверяешь, если контейнер для ошибки не задан, то используешь контейнер для содержимого.
а если сделать как в jquery?
success: function() {..},
fail: function() {...}
понимешь?
Можно и так
Вообще, было бы хорошо встроить индикатор загрузки в механизм.
Т.е. где-то на странице мы имеем скрытый элемент типа такого:
<div id="ajax-loader" style="display:none"><img src="loader.gif"></div>
В js будет что-то вроде:
ajax({
loader_id: "loader",
...
});
А внутри функции перед отправкой запроса делаем видимым индикатор, по завершении display: none;
А callback'и пусть служат для обработки ответа или ошибки.
В таком случае можно выкинуть параметры response_container_id и error_container_id. Пусть всей обработкой информации и выводом занимаются callback'и.
Добавлено 29.07.14 в 17:28:40:
Как сделаешь новую версию выгружай сюда js файл. Я может че добавлю, и будет норм функция!
Всё, готовый вариант.
[code]// ajax 0.0.1
function ajax(method, url, vars, async, response_at, error_at) {
if (response_at) var e_response = document.getElementById(response_at);
var e_error = document.getElementById(error_at);
// check XMLHttpRequest supported
if (window.XMLHttpRequest) {
// make new object
var XHR = new XMLHttpRequest();
// request handler
XHR.onreadystatechange = function () {
// request state
if (XHR.readyState == 4) {
// if success
if (XHR.status == 200) {
// if responsed
if (e_response) e_response.innerHTML = XHR.responseText;
}
else {
// if fail
e_error.innerHTML = 'Ошибка.';
}
}
}
// if post method
if (method == 'POST') {
XHR.open(method, url, async);
// if method POST add header
XHR.setRequestHeader("content-type", "application/x-www-form-urlencoded"
// sending..
XHR.send(vars);
}
else {
// if get method
// add vars at url string
XHR.open(method, url + '?' + vars, async);
// sending..
XHR.send(null);
}
}
else {
// if can't supported ActiveX
e_error.innerHTML = 'Ошибка. Включите поддержку ActiveX.';
}
}[/code]