PHP, HTML, JAVA, CSS, mySQL

Технология AJAX или опять JS?

Необходимо добавить на страницу таблицу с данными из текстового файла вида:
0|data1|data2|data3...
1|data1|...
...
n|data1|...
Мне нужно загнать все эти данные в двумерный массив. В PHP это сделать можно, только вот страница полностью обновиться, а как это сделать в JS - не имею и малейшего понятия. Слышал, что используя принцип Ajax можно обновлять только нужные части документа, а не документ целиком. Как это организовать?
почитай про объект ActiveXObject() (это для IE),
для остальных браузеров - XMLHttpRequest()
Хорошо. Я смог записать в контейнер div HTML страницу с помощью такого объекта. Это мне подходит, но нужно ещё, чтобы методом POST PHP-сценарию передавались данные для обработки. У меня два поля: обычное текстовое (логин) и поле для ввода пароля + 2 чекбокса. Кнопки Submit нет. Вместо неё ссылка в виде картинки посредством JavaScript выполняет (как я понял) запрос из формы (параметр action). Я пробовал прописать именно в "action" моей формы скрипт запроса, но данные так и не передались сценарию. Как правильно это сделать?
вобчем так:
Код:
function createXmlHttpRequestObject() { var xmlhttp try { xmlhttp = new XMLHttpRequest() } catch(e) { try { xmlhttp = new ActiveXObject(Microsoft.XMLHttp) } catch(e) {} } if(!xmlhttp) alert(Error) else return xmlhttp}var xmlhttp = createXmlHttpRequestObject()function handleRequestStateChange() { if(xmlhttp.readyState == 4) { if(xmlhttp.status == 200) { response = xmlhttp.responseText mydiv = document.getElementById(ajaxcontent) mydiv.innerHTML = response } }}function getContent() { xmlhttp.open(POST, request.php, true) // указываем пхп-файл которому нужно отправлять запрос xmlhttp.onreadystatechange = handleRequestStateChange // когда придет ответ с сервера, вызовется функция handleRequestStateChange xmlhttp.setRequestHeader(Content-Type, application/x-www-form-urlencoded;charset=utf-8) xmlhttp.send(&r=строка) // отсылается переменная r методом POST}
а теперь пхп-файл (request.php):
Код:
<?$r = iconv(utf-8, utf8, $_POST[r]);// теперь в переменной r храниться значение строкаecho htmlentities(гыгы, ENT_NOQUOTES, utf8);;?>
эээ... ну и еще html-файл:
Код:
<HTML><HEAD> <SCRIPT language=JavaScript> ... // думаю здесь ты знаешь че написать ... </SCRIPT></HEAD><BODY> <DIV id=ajaxcontent></DIV> <INPUT type=button onClick=getContent();></BODY></HTML>
Гы. Пожаловался на неизвестную функцию "iconv"... Вроде разобрался, но скрипт передаёт только готовую строку, а мне нужно узнать её из элемента формы. Пробовал записывать значение value в переменную, но как и что писать в xmlhttp.send в качестве параметра не знаю.
Сообщение от mefisto_hero
Пробовал записывать значение value в переменную, но как и что писать в xmlhttp.send в качестве параметра не знаю.
ну например есть такой элемент на форме:
<INPUT type=text name=name>
теперь в js пишем так:
str = document.getElementByName(name).value
xmlhttp.send(&r=+str)
// а если например элемента два:
<INPUT type=text name=login>
<INPUT type=password name=password>
// JS:
login = document.getElementByName(login).value
pass = document.getElementByName(password).value
xmlhttp.send(&pass=+pass+&login=+login)
// теперь в php-скрипте будут доступны две переменные $_POST[login] и $_POST[pass]
Хм. Попробовал. Вот что у меня написано в скрипте:
Код:
function getContent() { str = &pass=+document.getElementByName(password).value xmlhttp.open(POST, loading.php, true) xmlhttp.onreadystatechange = handleRequestStateChange xmlhttp.setRequestHeader(Content-Type, application/x-www-form-urlencoded) xmlhttp.send(str) }
Сервер при этом ничего не возвращает. А если изменить строку
Код:
str = &pass=+document.getElementByName(password).value
на
Код:
str = &pass=пароль
то всё нормально, в div-контейнер записали значение $_POST[pass].
В чём проблема?
Упс. Сам нашёл ошибку: к ЭЛЕМЕНТУ ФОРМЫ нужно обращаться напрямую, а не искать по имени через getElementByName. И можно ещё вопросик: в php сценарии есть строчка Код:
header("Content-type: text/plain; charset=windows-1251");
если я в этом сценарии использую русские буквы, то после выполнения ajax-запроса возвращаются странные символы. Поменяв кодировку в этой строке на utf-8 - всё ОК. НО: в этом php-скрипте я работаю с БД, в которой для всех таблиц и полей установлена utf8 general ci, по этому все данные из таблицы на русском языке превращаются в серии вопросительных знаков. Как это оптимизировать?