Фаст режимом учу Js

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем vital, 18 ноя 2009.

  1. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    Вобщем, простая задача. Есть форма. Нужно отправить ее содержимое на мыло аяксом. Ну и проверить ее содержимое тоже аяксом=)
    С проверкой содержимого все понятно в онсабмит формы всунул: return isfilled(); Вроде работает=)Но вот думаю, может лучше проверять внутри пхп скрипта-контроллера?
    Далее, собственно, сама отправка.
    Нашел в нете такую штуку
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='js'>/*
    Создание XMLHttpRequest-объекта
    Возвращает созданный объект или null,
    если XMLHttpRequest не поддерживается
    */
    function createRequestObject() {
    var request = null;
    try {
    request=new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e){}
    if(!request) try {
    request=new ActiveXObject('Microsoft.XMLHTTP');
    } catch (e){}
    if(!request) try {
    request=new XMLHttpRequest();
    } catch (e){}
    return request;
    }

    /*
    Кодирование данных (простого ассоциативного массива вида
    { name : value, ...} в URL-escaped строку (кодировка UTF-8)
    */
    function urlEncodeData(data) {
    var query = [];
    if (data instanceof Object) {
    for (var k in data) {
    query.push(encodeURIComponent(k) + "=" +
    encodeURIComponent(data[k]));
    }
    return query.join('&');
    } else {
    return encodeURIComponent(data);
    }
    }

    /*
    Выполнение POST-запроса
    url - адрес запроса
    data - параметры в виде простого ассоциативного массива
    { name : value, ...}
    callback - (не обяз.) callback-функция,
    которая будет вызвана после выполнения запроса
    и получения ответа от сервера
    */
    function serverRequest(url, data, callback) {
    var request = createRequestObject();
    if(!request) return false;
    request.onreadystatechange = function() {
    if(request.readyState == 4 && callback) callback(request);
    };
    request.open('POST', url, true);
    if (request.setRequestHeader)
    request.setRequestHeader("Content-Type",
    "application/x-www-form-urlencoded");
    request.send(urlEncodeData(data));
    return true;
    }[/CODE]

    data нужен ассоциативный массив.. Как его сформировать? Где-то в инете видел такой пример, теперь вот не могу найти..
    Что-то в духе:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Снова код)</div></div><div class="sp-body"><div class="sp-content">
    <!--shcode--><pre><code class='js'>function CreateArray(form)
    {
    var res=array();
    for (k in form)
    {
    res[k.name]=[k.value];
    }
    return res;
    }[/CODE]
    Подправьте меня плиз.
    и последнее, после выполения скрипта вызовется ф-я callbak. Так вот, как из нее получить рез-т выполнения пхп скрипта? Где он будет находиться?
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Для инфы - коллега писал насчет веб-разработки:
    А там решай сам =)
    По остальному - пока не подскажу, код аналогичный делали, но там кодировали отдельные выбранные input в строку. Может, еще гляну.
     
  3. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    if(request.status == 200) ответ в request.responseText
     
  4. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2

Поделиться этой страницей