X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Присвоение значений с полей
PRStudio
PRStudio
Topic Starter сообщение 16.3.2011, 1:00; Ответить: PRStudio
Сообщение #1


Решил углубиться и изучить ajax, но и тут с самого начала наткнулся на грабли.

Проблема очевидна, скрипт отказывается присваивать переменной значение с заданного поля. Я перепробовал кучу вариантов написания, вроде var name = document.form.name.value; (где form - имя формы и name - имя инпута, их я затем удалил - форму и имя инпута), также пробовал по ID, но ничего не выходит. Сам ajax запрос работает, и скрипт выдает ответ, проблема лишь с присвоением значения с поля. Вот сам js: (P.S. о кроссбраузерности не задумывался - не проверял на работоспособность в ИЕ)
[JS]var name = document.all('mylogin').value;
alert(name); // Проверка, объявилась ли переменная name
http_request = new XMLHttpRequest();
http_request.onreadystatechange = function() { alertContents(http_request); }; // Установить функцию которая будет использоваться при получении ответа
http_request.open('GET','ajax.php?name='+name, true); //открыть соединение
http_request.send(null); //отослать запрос серверу

function alertContents(http_request) {
if (http_request.readyState == 4) { //Если ответ получен
if (http_request.status == 200) { //Если все нормально
document.getElementById('message').innerHTML=http_request.responseText;
}
}
}[/JS]

Вот html:
<html>
<head>
<title>Пример AJAX</title>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<input type="text" id="mylogin" />
<div id="message" />
</body>
</html>


Я так и не могу понять в чем проблема, ибо перелистал весь свой учебник и перелазил кучу сайтов с примерами, все варианты перепробовал.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
forest69
forest69
сообщение 16.3.2011, 19:29; Ответить: forest69
Сообщение #2


[JS]name = document.getElementById('mylogin').value;[/JS]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SEVI
SEVI
сообщение 16.3.2011, 20:51; Ответить: SEVI
Сообщение #3


Если я не ошибаюсь , document.all это массив. А к массивам обращаются не через обычные скобки а через квадратные. Но это я так для справки.
А вообще юзайте то что показал forest96. И еще, слветую вам использовать библиотеку JQuery))))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
PRStudio
PRStudio
Topic Starter сообщение 16.3.2011, 20:57; Ответить: PRStudio
Сообщение #4


(forest69 @ 16.3.2011, 21:29) *
name = document.getElementById('mylogin').value;

Это один из первых вариантов, который я пробовал.

Совершил глупейшую ошибку, я присвоил идентификатор переменной раньше, чем создался сам инпут с идентификатором. Решил проблему функцией и событием onLoad
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
PRStudio
PRStudio
Topic Starter сообщение 17.3.2011, 20:11; Ответить: PRStudio
Сообщение #5


Возникла новая проблема. Скрипт не желает варьировать с полученными от сервера результатами. Скрипт (JS) получил ответ от сервера, однако как теперь заставить JS работать с полученными данными? Скажем AJAX проверяет, занято ли имя пользователя. Если занято, скрипт на который ссылается JS отвечает 'true' иначе 'false'. Я присваиваю ответ сервера, скажем, переменной
[JS]var responseServerValue = http_request.responseText;[/JS]
Проблема в том, что я могу только вывести работу данной переменной на экран, но не могу производить с ней никаких действий. Т.е. если я напишу:
[JS]if (responseServerValue == 'true'){
<..>
}[/JS]
скрипт просто впадет в "штопор". Возможно ли как-то "переоформить" переменную для возможности работы с ней?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SEVI
SEVI
сообщение 17.3.2011, 20:59; Ответить: SEVI
Сообщение #6


как у вас разумеется "штопор"
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
PRStudio
PRStudio
Topic Starter сообщение 17.3.2011, 21:04; Ответить: PRStudio
Сообщение #7


Скрипт перестает работать и не может получить ответ от сервера. (Я поставил картинку загрузки, если ответ от сервера не равен 4, т.е. если ответ не получен). Так вот когда я пытаюсь создать событие с полученными от сервера данными. Появляется эта самая картинка загрузки и ничего не происходит.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SEVI
SEVI
сообщение 18.3.2011, 20:07; Ответить: SEVI
Сообщение #8


[JS]function create_object() {
var http_request = false;
// Mozila, Safari etc.
if(window.XMLHttpRequest) {
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/html; charset=windows-1251');
}
}
// IE
else if(window.ActiveXObject) {
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {}
}
}
// Error
if(!http_request) {
alert('Failed to create object of class XMLHTTP');
return false;
}
else { return http_request; }
}
function make_request() {
var name = document.all('mylogin').value;http_request = create_object();
http_request.onreadystatechange = function() { alert(http_request); };
http_request.open('GET', 'ajax.php?name='+name, true);
http_request.send(null);
}
[/JS]
должно работать
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
PRStudio
PRStudio
Topic Starter сообщение 18.3.2011, 21:38; Ответить: PRStudio
Сообщение #9


спасибо SEVI, но вероятно я неверно изъяснил ситуацию :)
Мне необходимо ,скажем, проверить логин на занятость. Для этого отправляем серверу AJAX запрос. Если логин занят, сервер формирует ответ (пишет) 'true', если логин свободен - 'false'.
Проблема в том, что JavaScript отказывается работать с результатом запроса, т.е. я не могу этот результат ни с чем сравнить, т.е. я стремлюсь сделать так:
если сервер ответил 'true' то пишем 'занято' иначе 'свободно'.

Вот структура неработающего кода:
[JS]if (http_request.readyState != 4){
document.getElementById('message').innerHTML='<img src="/ajax-loader.gif"/>';
}
if (http_request.readyState == 4) { //Если ответ получен
if (http_request.status == 200) { //Если все нормально
var responseServerValue = http_request.responseText;
if (responseServerValue == 'true'){
document.getElementById('message').innerHTML='Занято';
}
}
}[/JS]

Где ajax-loader.gif - иконка, отображаемая при невыполнении и/или загрузке запроса.

Как видно из кода, переменной responseServerValue я присвоил ответ сервера. Вот тут и проблема, как теперь заставить скрипт работать с этой переменной, ибо если написать:
[JS]if (responseServerValue == 'true'){
document.getElementById('message').innerHTML='Занято';
}[/JS]
Попросту появляется собственно иконка загрузки.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SEVI
SEVI
сообщение 19.3.2011, 14:02; Ответить: SEVI
Сообщение #10


Строку
[JS]http_request.onreadystatechange = function () { alert(http_request); }; [/JS]
Замените на
[JS]
http_request.onreadystatechange = function () {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
if(http_request.responseText == 'true'){
//выводим куда надо что логин не занят
} else {
//выводим куда надо что логин занят
}
} else { alert('Сервер не отвечает.');
}}
};[/JS]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыXField Meta v5 - модуль SEO оптимизации дополнительных полей для DLE
0 PunPun 1719 14.8.2017, 15:29
автор: PunPun
Открытая тема (нет новых ответов) Вывод в цикле значений из базы!
3 Panich 4257 27.5.2011, 16:14
автор: -Panich-


 



RSS Текстовая версия Сейчас: 19.4.2024, 19:35
Дизайн