• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы vital
  • Дата начала
V

vital

Вобщем, простая задача. Есть форма. Нужно отправить ее содержимое на мыло аяксом. Ну и проверить ее содержимое тоже аяксом=)
С проверкой содержимого все понятно в онсабмит формы всунул: 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. Так вот, как из нее получить рез-т выполнения пхп скрипта? Где он будет находиться?
 
H

hosm

С проверкой содержимого все понятно в онсабмит формы всунул: return isfilled();Вроде работает=)Но вот думаю, может лучше проверять внутри пхп скрипта-контроллера?
Для инфы - коллега писал насчет веб-разработки:
Но появляется и головная боль. Теперь мы не можем доверить JS проверку каких-то важных вещей. Обязательно надо дублировать эту проверку сервером.
К примеру, вы напишете JS-функцию, которая на onSubmit формы сделает проверку заполнения полей. Я могу в адресной строке браузера написать что-то типа:
java script: document. formName.onSubmit="" зарубив вашу функцию проверки.
Все. Форма при отправке ничего не будет проверять и будет отправлена как есть. А обрабатывающий механизм со стороны сервера может вылететь с ошибкой.
А там решай сам =)
По остальному - пока не подскажу, код аналогичный делали, но там кодировали отдельные выбранные input в строку. Может, еще гляну.
 
A

Akupaka


 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!