Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
39 / 9 / 1
Регистрация: 09.09.2007
Сообщений: 158
1

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

17.11.2007, 15:49. Показов 2956. Ответов 8
Метки нет (Все метки)

Необходимо добавить на страницу таблицу с данными из текстового файла вида:
0|data1|data2|data3...
1|data1|...
...
n|data1|...

Мне нужно загнать все эти данные в двумерный массив. В PHP это сделать можно, только вот страница полностью обновиться, а как это сделать в JS - не имею и малейшего понятия. Слышал, что используя принцип Ajax можно обновлять только нужные части документа, а не документ целиком. Как это организовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2007, 15:49
Ответы с готовыми решениями:

Где находится технология Ajax ?
Привет всем. Посмотрел пару видео-примеров по технологии Ajax. Например вот короткий и понятный...

Определить AJAX библиотеку или отследить AJAX запрос любым методом
Требуется определить какая библиотека используется на сайте для создания AJAX запросов....

Стандарт ajax или jquery-> ajax?
Добрый день, такой вопрос что лучше всего использовать стандарт AJAX объект XMLHttprequest либо же...

Технология Ajax и Iframe
Помогите, пожалуйтса, в сложившиеся ситуации: Я делаю небольшой сайт, где пользователю...

8
7 / 8 / 10
Регистрация: 22.08.2006
Сообщений: 378
17.11.2007, 20:00 2
почитай про объект ActiveXObject() (это для IE),
для остальных браузеров - XMLHttpRequest()
0
39 / 9 / 1
Регистрация: 09.09.2007
Сообщений: 158
18.11.2007, 14:39  [ТС] 3
Хорошо. Я смог записать в контейнер div HTML страницу с помощью такого объекта. Это мне подходит, но нужно ещё, чтобы методом POST PHP-сценарию передавались данные для обработки. У меня два поля: обычное текстовое (логин) и поле для ввода пароля + 2 чекбокса. Кнопки Submit нет. Вместо неё ссылка в виде картинки посредством JavaScript выполняет (как я понял) запрос из формы (параметр action). Я пробовал прописать именно в "action" моей формы скрипт запроса, но данные так и не передались сценарию. Как правильно это сделать?
0
7 / 8 / 10
Регистрация: 22.08.2006
Сообщений: 378
18.11.2007, 17:10 4
вобчем так:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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) [color=green]// указываем пхп-файл которому нужно отправлять запрос[/color]
 xmlhttp.onreadystatechange = handleRequestStateChange [color=green]// когда придет ответ с сервера, вызовется функция handleRequestStateChange[/color]
 xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8')
 xmlhttp.send('&r=строка') [color=green]// отсылается переменная 'r' методом POST[/color]
}
а теперь пхп-файл (request.php):
PHP
1
2
3
4
5
<?
$r = iconv('utf-8', 'cp1251', $_POST['r']);
// теперь в переменной [b]r[/b] храниться значение 'строка'
echo htmlentities('гыгы', ENT_NOQUOTES, 'cp1251');;
?>
0
7 / 8 / 10
Регистрация: 22.08.2006
Сообщений: 378
18.11.2007, 17:18 5
эээ... ну и еще html-файл:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<HTML>
<HEAD>
 <SCRIPT language='JavaScript'>
  ...
  // думаю здесь ты знаешь че написать
  ...
 </SCRIPT>
</HEAD>
<BODY>
 <DIV id='ajaxcontent'></DIV>
 <INPUT type='button' onClick='getContent();'>
</BODY>
</HTML>
0
39 / 9 / 1
Регистрация: 09.09.2007
Сообщений: 158
18.11.2007, 17:55  [ТС] 6
Гы. Пожаловался на неизвестную функцию "iconv"... Вроде разобрался, но скрипт передаёт только готовую строку, а мне нужно узнать её из элемента формы. Пробовал записывать значение value в переменную, но как и что писать в xmlhttp.send в качестве параметра не знаю.
0
7 / 8 / 10
Регистрация: 22.08.2006
Сообщений: 378
18.11.2007, 21:17 7
Пробовал записывать значение value в переменную, но как и что писать в xmlhttp.send в качестве параметра не знаю.
ну например есть такой элемент на форме:
HTML5
1
<INPUT type='text' name='name'>
теперь в js пишем так:
Javascript
1
2
str = document.getElementByName('name').value
xmlhttp.send('&r='+str)
// а если например элемента два:
HTML5
1
2
<INPUT type='text' name='login'>
<INPUT type='password' name='password'>
// JS:
Javascript
1
2
3
4
login = document.getElementByName('login').value
pass = document.getElementByName('password').value
xmlhttp.send('&pass='+pass+'&login='+login)
 // теперь в php-скрипте будут доступны две переменные $_POST['login'] и $_POST['pass']
0
39 / 9 / 1
Регистрация: 09.09.2007
Сообщений: 158
18.11.2007, 21:21  [ТС] 8
Хм. Попробовал. Вот что у меня написано в скрипте:
Javascript
1
2
3
4
5
6
7
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) 
}
Сервер при этом ничего не возвращает. А если изменить строку
Javascript
1
 str = '&pass='+document.getElementByName('password').value
на
Javascript
1
 str = '&pass=пароль'
то всё нормально, в div-контейнер записали значение $_POST['pass'].
В чём проблема?
0
39 / 9 / 1
Регистрация: 09.09.2007
Сообщений: 158
18.11.2007, 22:22  [ТС] 9
Упс. Сам нашёл ошибку: к ЭЛЕМЕНТУ ФОРМЫ нужно обращаться напрямую, а не искать по имени через getElementByName. И можно ещё вопросик: в php сценарии есть строчка
PHP
1
header("Content-type: text/plain; charset=windows-1251");
если я в этом сценарии использую русские буквы, то после выполнения ajax-запроса возвращаются странные символы. Поменяв кодировку в этой строке на utf-8 - всё ОК. НО: в этом php-скрипте я работаю с БД, в которой для всех таблиц и полей установлена cp1251 general ci, по этому все данные из таблицы на русском языке превращаются в серии вопросительных знаков. Как это оптимизировать?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2007, 22:22

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Опять не работает AJAX
почему код не хочет работать?? вот: HTML: &lt;input type=&quot;text&quot; id=&quot;text1&quot;&gt; &lt;br&gt; &lt;input...

Jsoup & js ajax получение данных из бд ajax (или как-то так :)
Привет! Есть сайт с видео, на нем мне нужная страница с информацией. Парсил с помощью Jsoup, в...

Технология пакетной обработки springbatch и технология парсинга XML
Всем доброго! Практикую спринг и столкнулся с такой задачей. У меня есть xml файл из которого...

(Модуль для SolidWorks) Продвинутая технология или очередной «ФЕЙК»
Здравствуйте! Недавно очутился на конкурсе с проектами, которые ищут инвестиции и мне запомнился...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.