Всем привет, написал небольшую функцию для работы с ajax-ом, мб есть какие-либо недочеты, ошибочки?
[code]
function ajax(agrs) {
if (args.id) var element = document.getElementById(args.id);
// check XMLHttpRequest supported
if (window.XMLHttpRequest) {
// make new object
var XMLHttpRequest = new XMLHttpRequest();
// request handler
XMLHttpRequest.onreadystatechange = function () {
// request state
if (XMLHttpRequest.readyState == 4) {
if (XMLHttpRequest.status == 404) {
// if is id
if (args.id) element.innerHTML = 'Ошибка.';
return false;
}
else
if (XMLHttpRequest.status == 200) {
// if is id
if (args.id) element.innerHTML = XMLHttpRequest.responseText;
return true;
}
}
}
// if POST method
if (args.method == 'POST') {
XMLHttpRequest.open(args.method, args.url, true);
XMLHttpRequest.setRequestHeader("content-type", "application/x-www-form-urlencoded"
//
XMLHttpRequest.send(args.vars);
}
// if GET method
else {
XMLHttpRequest.open(args.method, args.url + '?' + args.vars, true);
//
XMLHttpRequest.send(null);
}
}
}[/code]
Добавлено 28.07.14 в 10:54:17:
Есть тут достойные кодеры или кроме флуда не знаем ничего?
Да тут больше не аякс, а удобность самой функции. Я бы сказал что тут аякса нет почти)) В основном простой js.
и этим "чудом" знаком не особо
хз, закрепляю инглишь, хочу выучить.. к меня весь код в нем)
Я бы в параметрах сделал два id (response_element_id, error_element_id), чтобы ошибку можно было писать в отдельный контейнер, на котором будут стили соответствующие сообщению об ошибке.
Добавлено 28.07.14 в 14:45:17:
if (args.method == 'POST') {
XMLHttpRequest.open(args.method, args.url, true);
XMLHttpRequest.setRequestHeader("content-type", "application/x-www-form-urlencoded"smile;
//
XMLHttpRequest.open(args.vars);
----------------
Мб последняя строка должна быть XMLHttpRequest.send(args.vars);
Исправь
Добавлено 28.07.14 в 14:54:00:
И наверное не забудь про вывод ошибки, если XMLHttpRequest не поддерживается.
спасибо) приятно видеть на этом сайте кодеров)
ebalazhabagadyuku, да не вопрос Приятно поучаствовать в размышлениях других.
Добавлено 28.07.14 в 17:07:49:
Кстати, только сейчас обратил внимание, что параметры (args.vars) ты принимаешь строкой. Это не очень удобно, так как если в js например собирать данные из формы, то после их будет не удобно формировать в строку при вызове функции. Лучше будет принимать параметры объектом и уже в самой функции формировать из него строку.
не совсем понял.
JS example:
[code]ajax(args = {
url: 'http://127.0.0.1/ajax/example.php',
vars: 'val1=1&val2=1&val3=3',
method: 'POST'
});[/code]
PHP example:
[code]// if user logged
if (isset ($_['user'])) {
// check ajax query
if (isset ($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
// check requested vars (GET/POST)
if (isset ($_POST['val1'], $_POST['val2'], $_POST['val3'])) {
}
else print 'Ошибка обработки данных.';
}
else print 'Ошибка запроса.';
}
else print 'Ошибка.<br/>
Вы не авторизированы.';
[/code]