[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: аякс и ИЕ
Gufon
Написал такой код
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
function callServer() {
// Получить city и state из web-формы
var login = document.getElementById("login").value;
var password = document.getElementById("password").value;
var passwordrefresh = document.getElementById("passwordrefresh").value;
//var capcha = document.getElementById("capcha").value;
// Продолжать только если есть значения обоих полей

if ((login == null) || (login == "")) return;
if ((password == null) || (password == "")) return;
if ((passwordrefresh == null) || (passwordrefresh == "")) return;
// if ((capcha == null) || (capcha == "")) return;
// Создать URL для подключения

var url = "/js/php/ajax_reg.php?login=" + escape(login) + "&password=" + escape(password) + "&passwordrefresh=" + escape(passwordrefresh);


// Открыть соединение с сервером
xmlHttp.open("GET", url, true);

// Установить функцию для сервера, которая выполнится после его ответа
xmlHttp.onreadystatechange = updatePage;

// SПередать запрос
xmlHttp.send(null);
}
function updatePage() {
if (xmlHttp.readyState == 4) {
var response = xmlHttp.responseText;
document.getElementById("otvet_server").innerHTML = response;
}
}
в хроме мозиле опере, все ок, но в нашем любимом и ИЕ нет реакции, абсолютно нажимаю отправить и нечего нет. Я же вроде прописал для него



Спустя 18 минут, 28 секунд (21.04.2011 - 11:51) alex12060 написал(а):
Где это ты для него написал? Я не вижу лично.

Вижу smile.gif

Спустя 55 минут, 40 секунд (21.04.2011 - 12:46) Renden написал(а):
Gufon
Рекомендую почитать про jquery, код уменьшится раз в 5 и все будет работать))
Если интересно могу написать пример.

Спустя 24 минуты, 2 секунды (21.04.2011 - 13:10) Gufon написал(а):
да, можно, но есть но, она тяжолая

Спустя 5 минут, 47 секунд (21.04.2011 - 13:16) Renden написал(а):
Gufon
29килобайт -тяжелая?)) Да это 1 картинка!

Спустя 17 секунд (21.04.2011 - 13:16) ApuktaChehov написал(а):
Цитата (Renden @ 21.04.2011 - 12:46)

код уменьшится раз в 5

А вы можете сказать сколько кода внутри JQuery стоит за этими 5 строками?

Вопрос в избыточности. Нравится ли вам, что в памяти болтается код который, возможно, никогда не будет использоваться, или нет. Кому то все равно, к кому -то нет. К примеру мне не нравится, когда работа избыточна. Хороший софт должен делать ровно столько, сколько нужно и использовать ровно столько ресурсов, сколько необходимо.

Спустя 4 минуты, 20 секунд (21.04.2011 - 13:21) Renden написал(а):
ApuktaChehov
А зачем мне это, это библиотека которая упрощает нам жизнь, она выполняет только те действия которые от неё требуются, например вас интересуте сколько когда внутри php функции допустим rand() или там iconv() вы же ими пользуетесь а не пишите свои функции или код с нуля? Что мешает использовать фунции jquery?)

Спустя 7 минут, 45 секунд (21.04.2011 - 13:29) ApuktaChehov написал(а):
такие функции как iconv() или rand(), написаны на C и работают в разы быстрее чем функция которую напишу я. Точно так же как и с JQuery. Т.к. она написана на JS, работает она медленнее, чем встроенные в сам JS функции.

А по поводу упрощения жизни, это да. Упрощает. Настоящим программистам она помогает - несомненно. Но есть и побочный эффект - толпа быдло/говно кодеров, некоторые из которых считаю что JS написан на JQ.

Спустя 1 минута, 57 секунд (21.04.2011 - 13:30) ApuktaChehov написал(а):
Gufon
Вот держи функцию:
//Создаем объект XMLHttpRequest для работы Ajax в разных браузерах
if(navigator.appName == "Microsoft Internet Explorer")
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //для Internet Explorer
else
xmlHttp = new XMLHttpRequest(); //для остальных баузеров

//Если, не удалось создать XMLHttpRequest,
//Сообщам пользователю, что ничего не работает

if (!xmlHttp)
alert("Возможно, Ваш браузер устарел или в нем отключена поддержка JavaScript.Работа невозможна.");

//Функция принимает xml или POST данные в качестве первого аргумента.
//Второй аргумент принимает статус операции(получение данных или отправка)
//Третий аргумент это адрес скрипта к которому отправляется запрос.

function callServer(string, url, request_type, func)
{
//Открываем соединение с сервером
//Первый аргумент(POST) - это метод запроса, второй(url) - адрес скрипта, куда мы отправляем запрос.
//Третий аргумент отвечает за тип запроса, может быть синхронный и асинхронный. (см. ниже)

xmlHttp.open("POST", url, true);

//Оправляем серверу заголовок о типе и кодировке данных
if(request_type == 'xml')
xmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
else
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");

//Определяем функцию, которая выполнится после ответа cервера
xmlHttp.onreadystatechange = function ()
{
//Запрос xmlhttp регулярно отчитывается о своем состоянии.
//Состояние = 4, означает конец выполнения операций,
//а функция-обработчик проверяет - не настало ли это состояние.

if (xmlHttp.readyState == 4)
{
//Проверяем все ли хорошо. Ответ сервера = 200 обозначает,
//что запрос удовлетворен.

if(xmlHttp.status == 200)
if(request_type == 'xml')
func(xmlHttp.responseXML);
else
func(xmlHttp.responseText);

}
}

//Передаем запрос на сервер
xmlHttp.send(string);
}


Работает вот так:
callServer('data=1&data1=2', 'url', 'text',  
function (data)
{
alert(data);
});

Спустя 6 минут, 26 секунд (21.04.2011 - 13:37) Renden написал(а):
ApuktaChehov
Я согласен с тобой, но учитывая что ява, и явасткрипт сами по себе тормозные языки, от jquery ему намного хуже не станет, думаю эти милисикунды мы не заметим) + еще в том что js выпролняется в браузере именно пользователя, так что беспокоится о нагрузке как в php на сервер не имеет смысла).

Спустя 3 минуты, 41 секунда (21.04.2011 - 13:41) ApuktaChehov написал(а):
Renden а о php я и не беспокоюсь. Я считаю что сначала нужно научиться все делать самому, а потом упрощать себе жизнь. Иначе мы все будем обычными юзерами, а не программистами. Вот так.

Спустя 11 минут, 44 секунды (21.04.2011 - 13:52) Renden написал(а):
ApuktaChehov
У меня все на оборот, я вот например системный администратор, а раньше я был просто пользователем юзал винду и непарился. Потом начал усложнять себе жизнь.. Теперь я даже в винде активно юзаю командную строку, а про линукс я вообще молчу.
Я к тому что начинают с простого - к сложному. В данном случае jquery проще чем просто js. И быдлокодер начав писать на простом, постепенно переходит к сложному, начинает оптимизировать или сам писать какие-то библиотеки. Но это оффтоп и исключительно мое ИМХО smile.gif

Спустя 1 час, 48 минут, 18 секунд (21.04.2011 - 15:41) Gufon написал(а):
Цитата (ApuktaChehov @ 21.04.2011 - 10:30)
Gufon
Вот держи функцию:
//Создаем объект XMLHttpRequest для работы Ajax в разных браузерах
if(navigator.appName == "Microsoft Internet Explorer")
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //для Internet Explorer
else
xmlHttp = new XMLHttpRequest(); //для остальных баузеров

//Если, не удалось создать XMLHttpRequest,
//Сообщам пользователю, что ничего не работает

if (!xmlHttp)
alert("Возможно, Ваш браузер устарел или в нем отключена поддержка JavaScript.Работа невозможна.");

//Функция принимает xml или POST данные в качестве первого аргумента.
//Второй аргумент принимает статус операции(получение данных или отправка)
//Третий аргумент это адрес скрипта к которому отправляется запрос.

function callServer(string, url, request_type, func)
{
//Открываем соединение с сервером
//Первый аргумент(POST) - это метод запроса, второй(url) - адрес скрипта, куда мы отправляем запрос.
//Третий аргумент отвечает за тип запроса, может быть синхронный и асинхронный. (см. ниже)

xmlHttp.open("POST", url, true);

//Оправляем серверу заголовок о типе и кодировке данных
if(request_type == 'xml')
xmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
else
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");

//Определяем функцию, которая выполнится после ответа cервера
xmlHttp.onreadystatechange = function ()
{
//Запрос xmlhttp регулярно отчитывается о своем состоянии.
//Состояние = 4, означает конец выполнения операций,
//а функция-обработчик проверяет - не настало ли это состояние.

if (xmlHttp.readyState == 4)
{
//Проверяем все ли хорошо. Ответ сервера = 200 обозначает,
//что запрос удовлетворен.

if(xmlHttp.status == 200)
if(request_type == 'xml')
func(xmlHttp.responseXML);
else
func(xmlHttp.responseText);

}
}

//Передаем запрос на сервер
xmlHttp.send(string);
}


Работает вот так:
callServer('data=1&data1=2', 'url', 'text',  
function (data)
{
alert(data);
});

Это что на jquery??? если да то я не заметил что кода стало меньше, его стало больше

Спустя 2 минуты, 1 секунда (21.04.2011 - 15:43) Gufon написал(а):
Цитата (ApuktaChehov @ 21.04.2011 - 10:16)
Gufon
29килобайт -тяжелая?)) Да это 1 картинка!

еслибы 29, 85 сжатая

Спустя 6 минут, 1 секунда (21.04.2011 - 15:49) inpost написал(а):
Gufon
у меня 1 фотка 85 кб. =) А их у меня ого-го.
Тебе жалко за весь сайт загрузить 1 раз в жизни 85 кб?

Спустя 8 минут, 22 секунды (21.04.2011 - 15:57) alex12060 написал(а):
Не, конечно, это тяжко для обработки браузера)
А так, 85кб - малоооооу.

Спустя 1 минута, 49 секунд (21.04.2011 - 15:59) Gufon написал(а):
а вдруг у людей интернет слабый????

Спустя 8 минут, 19 секунд (21.04.2011 - 16:07) Gufon написал(а):
влюбом случае дайти литературу по jqury ajax. Мне кажется что не срабатует событие onclick="function"

Спустя 41 минута, 24 секунды (21.04.2011 - 16:49) Gufon написал(а):
ошибка втом что не может узнать какой xmlhttp
в firefox он возвращяет через alert XMLHttpRequest а в IE [object]

Спустя 32 минуты, 23 секунды (21.04.2011 - 17:21) inpost написал(а):
Gufon
Тебе же скинули функцию и показали, как её вызывать

Спустя 22 минуты (21.04.2011 - 17:43) Gufon написал(а):
я доконца не понял, какие параметры передавать

Спустя 11 минут, 25 секунд (21.04.2011 - 17:54) Gufon написал(а):
спасибо большое, код работает, но это не jquery, а читсый js и аякс. Наверно експолер не отправляет GET

Спустя 6 минут, 32 секунды (21.04.2011 - 18:01) Gufon написал(а):
рано обрадовался с этого скрипта
<?php
include('db.php');
$login = $_POST['login'];
$password = $_POST['password'];
$passwordrefresh = $_POST['passwordrefresh'];
//$cap = $_POST['cap'];
//$capcha = $_POST['capcha'];


$login = stripslashes($login);
$login = htmlspecialchars($login);
$login = trim($login);

$password = stripslashes($password);
$password = htmlspecialchars($password);
$password = trim($password);

$passwordrefresh = stripslashes($passwordrefresh);
$passwordrefresh = htmlspecialchars($passwordrefresh);
$passwordrefresh = trim($passwordrefresh);

$capcha = stripslashes($capcha);
$capcha = htmlspecialchars($capcha);
$capcha = trim($capcha);

switch($cap) {
case 1:$otvet = 2; break;
case 2:$otvet = 3; break;
case 3:$otvet = 3; break;
case 4:$otvet = 4; break;
case 5:$otvet = 4; break;
}

if (empty($login) or empty($password) or empty($passwordrefresh)) {
exit("Заполнены не все поля.");
}
if ($password !== $passwordrefresh) {
exit ("<font color='red'>Пароли не совпадают.</font>");
}
$login_mysql = mysql_query("SELECT password FROM users WHERE login='$login'",$db);
$login_myrow = mysql_fetch_array($login_mysql);
//if ($otvet != $capcha) {
//exit("Вы допустили ошибку при вводе цифр.<a href='newuser.php'>Назад</a>");
//}

if (!empty($login_myrow['password'])) {
exit("<font color='red'>Данный логин уже используется.</font>");
}
$newuser = mysql_query("INSERT INTO users (login,password,rang,img) VALUES ('$login','$password','Фанат','img/non.jpg')");
if ($newuser == true){
echo "<font color='green'>Вы успешно зарегистрировались</font>";
}
else {
echo "Произошла ошибка на сервере.";
}
?>

возвращяет что заполнены не все поля, мозила все ок
еще и пароли не совпадают

Спустя 1 час, 59 минут, 41 секунда (21.04.2011 - 20:01) ApuktaChehov написал(а):
Вы трассировку сделайте, посмотрите какие данные приходят и что с ними происходит

Спустя 20 минут, 24 секунды (21.04.2011 - 20:21) Gufon написал(а):
я забил на тупой жава скрипт и сделал на jquery
$('#otvet_server').load('/js/php/ajax_reg.php', $('#forma').serializeArray());

это и все, всместо вон того кода

Спустя 11 минут, 42 секунды (21.04.2011 - 20:33) ApuktaChehov написал(а):
Gufon - забивают косяки. А если вы еще не доросли до определенного уровня - это ваша проблема. Грубить незачем.

Спустя 43 минуты, 30 секунд (21.04.2011 - 21:16) Gufon написал(а):
Цитата
ufon - забивают косяки. А если вы еще не доросли до определенного уровня - это ваша проблема. Грубить незачем.

Я не грубил, я это сказал с юмором, ну если вы доросли сделайте, чтобы везде работало!!! Нужно смотреть на вещи проще!

Спустя 18 минут, 30 секунд (21.04.2011 - 21:35) inpost написал(а):
Gufon
Вообще его код везде работает, ты, видимо, просто не знаешь, как запускать функцию правильно... Ты думаешь, это наши проблемы? Берёшь учебник по JS и читаешь-читаешь-читаешь. Тебе уже готовое дают, а ты не знаешь, что с ним делать.

Спустя 15 минут, 20 секунд (21.04.2011 - 21:50) Gufon написал(а):
я все читал, он не может определить функцию в ИЕ
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.