Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.06.2015, 20:05
Новичок на форуме
Отправить личное сообщение для imonzx Посмотреть профиль Найти все сообщения от imonzx
 
Регистрация: 22.02.2015
Сообщений: 5

Асинхронный ajax запрос
Доброго времени суток.
Имеется функция для выполнения ajax запроса.
function ajax(url, callback, async, method, params, header)
    {
        var xmlHttp = getXmlHttpRequest();
        async = async || false;
        params = params || '';
        method = method || 'GET';
        if (method == 'GET') url += '?'+'searchParams=' +params;
        if (header != null) xmlHttp.setRequestHeader('Content-Type', header)
        xmlHttp.open(method, url, async);
        if (!async)
        {
            if (params == '') {
                xmlHttp.send(null);
            }else {
                xmlHttp.send(params);
            }
            callback(xmlHttp.responseText);
        }
        else
        {
            xmlHttp.onreadystatechange = function() {
                if (xmlHttp.readyState == 4) {
                    callback(xmlHttp);
                }
            };
            xmlHttp.send(null);
        }
    }


Так вот, если я делаю синхронный запрос, т.е:
ajax('...',
           function(data){console.log(data)},
                false,
                'POST',
                ...);

а когда делаю асинхронный запрос т.е:
ajax('...',
            function(data){console.log(data)},
                true,
                'POST',
                ...);

то получаю undefined.
Я подозреваю что проблема в моей функции для ajax запроса, гляньте своим опытным глазом и скажите что не так?
Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 12.06.2015, 20:52
Новичок на форуме
Отправить личное сообщение для nosuchfile Посмотреть профиль Найти все сообщения от nosuchfile
 
Регистрация: 12.06.2015
Сообщений: 2

В асинхронном варианте у тебя всегда посылается null, независимо от параметров.

вообще, код подозрительный какой-то.
вот тут
async = async || false;
params = params || '';
method = method || 'GET';

У тебя пишется все в глобальную область.
Далее, зачем писать
params = params || '';
...
if (params == '') {
                xmlHttp.send(null);

Если можно
var params=params||null
...
xmlHttp.send(params);

выкинтуть нахрен это ветвление.
Ответить с цитированием
  #3 (permalink)  
Старый 12.06.2015, 23:22
Новичок на форуме
Отправить личное сообщение для imonzx Посмотреть профиль Найти все сообщения от imonzx
 
Регистрация: 22.02.2015
Сообщений: 5

убрать то можно, но проблему это не решает.
Ответить с цитированием
  #4 (permalink)  
Старый 13.06.2015, 00:02
Новичок на форуме
Отправить личное сообщение для imonzx Посмотреть профиль Найти все сообщения от imonzx
 
Регистрация: 22.02.2015
Сообщений: 5

Кому интересно, проблема была в том что я забыл передавать заголовки(header).
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax get запрос RageXL AJAX и COMET 4 08.04.2014 18:52
AJAX запрос в Internet Explorer срабатывает через раз nikolayseo jQuery 5 13.11.2012 00:13
Как можно кешировать Ajax запрос ? saturn AJAX и COMET 5 27.10.2012 14:48
Асинхронный ajax запрос ставится в очередь ring AJAX и COMET 2 08.02.2011 17:47
ajax запрос с подгружемным js HelpeR AJAX и COMET 1 27.10.2008 12:44