[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Начинаю изучать JS Ajax
Xes
Переходим сразу к следующему посту.
Нашел книжецу
Аякс и ПХП разработка динамических приложений.

Делаю первый пример из книги из самого начала не получатся.
1) Помогите понять где ошибся.
2) Почитал коменты книги там пишут такие вещи, мол XMLHttpRequest (ни знаю как правельно назвать это наверное объект) вроди как устарел и все юзают библиотеку jQery кроме этого существует библиотека Prototype и др. так вот вопрос действительно ли XMLHttpRequest - это прошлый век, как скажем кодировка cp125 и нет смысла разбираться в этом так как скоро все перейдет jQery или еще что то.

По примеру из книги вроди бы повторил все в точности. Файлы находяться в папке test2.ru денвера, денвер запущенн.
index.html
Цитата

<html>
<head>
<title>Проба 1</title>
<script TYPE="text/javascript" src="a1.js"></SCRIPT>
</head>
<body onload="process();">
Сервер желает занть Ваше имя: <input type="text" id="myName" />
<div id="divMessage"></div>
</body>
</html>


a1.js - для проверки попытался вывести окошко alert - в первой строке но оно не выводиться если удалить весь оставшийся текст и оставить одну эту коменду, то окно появляется.
Цитата

alert("Ошибка создания объекта...");
// Помещаем объект в переменную
var xmlHtpp = createXmlHttpRequestObject();
//Функция создания объекста XMLHttpRequest
function createXmlHttpRequestObject()
{
var xmlHttp;
if(window.ActiveXObject)
{
  try
  {
   xmlHttp = new ActivXObject("Microsoft.XMLHTTP");
  }
  catch
  {
   xmlHttp = false;
  }
}
else
{
  try
  {
   xmlHttp = new XMLHttpRequest();
  }
  catch
  {
   xmlHttp = false;
  }
}
if(!xmlHttp)
  alert("Ошибка создания объекта");
else
  return xmlHttp;
}
//Запрос
function process()
{
if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
  name = encodeURIComponent(document.getElementById('myName').value);
  xmlHttp.open('GET', '1.php?name=' + name, true);
  xmlHttp.onreadystatechange = handleServerResponse;
  xmlHttp.send(null);
}
else
  setTimeout('process()', 1000);
}

function handleServerResponse()
{
if(xmlHttp.readyState == 4)
{
  if(xmlHttp.status == 200)
  {
   xmlResponse = xmlHttp.responseXML;
   xmlDocumentElement = xmlResponse.documentElement;
   heloMessage = xmlDocumentElement.firstChild.data;
   document.getElementById('divMessage').inerHtml = '<i>' + heloMesage + '</i>';
   setTimeout('process()', 1000);
  }
  else
   alert('При обращении к серверу возникли проблемы');
}
}


1.php - По этому файлу вопрос. Редактор PSPad обрубает у меня восприятие php кода в строке 3 где выводиться версия xml все что дальше как php не воспринимется точнее не подсвечивается. Это либо косяк подсветки либо косяк автора примера? echo ' ' - текст в одинарных кавычках у меня.
Цитата

<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
echo '<response>';
$name = $GET['name'];
echo $name.' !!!!!';
echo '</response>';
?>




Спустя 3 часа, 30 минут, 12 секунд (2.08.2011 - 21:39) ApuktaChehov написал(а):
А что это у вас за книга такая интересная?
Для начала XMLHttpRequest еще не устарел и JQ его использует. Просто он это все обернул в красивую обертку и толкает нам, ну так же как и экономика США.
wink.gif

Вообще интересно, вроде как для новичков, а уже в XML полезли. Вы хотя бы просто ответ сервера получали, без обмена данными, в простом текстовом виде?

На самом деле вам сначала надо вот это почитать:
ajax

Спустя 11 часов, 34 минуты, 25 секунд (3.08.2011 - 09:13) Xes написал(а):
GO Next Post
Книга Аякс и ПХП разработка динамических приложений.
Читал и то что на irbis-e.
Решил сделать другой пример попроще. Не Фаерфокс при анализе ошибок говорит не найден а1.php
Вот такой код:

index.html
Цитата
<html>
<head>
<title>Проба 1</title>
<script TYPE="text/javascript" src="a1.js"></SCRIPT>
</head>
<body>
Сервер желает занть Ваше имя: <input type="text" id="myName" />
<div id="div1"></div>
<button onclick="process()">Отправить</button>
</body>
</html>


a1.js
Цитата
// Помещаем объект в переменную
var xmlHttp = createXmlHttpRequestObject();
//Функция создания объекста XMLHttpRequest
function createXmlHttpRequestObject()
{
var xmlHttp;
xmlHttp = new XMLHttpRequest();
if(!xmlHttp)
  alert("Ошибка создания объекта");
else
  return xmlHttp;
}
//Запрос
function process()
{
if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
  xmlHttp.open('post', 'a1.php', true);
  xmlHttp.onreadystatechange = Refresh;
  xmlHttp.send('name=Vasia');
}
}

function Refresh()
{
if(xmlHttp.readyState == 4)
{
  request = xmlHttp.responseText;
  document.getElementById('div1').innerHtml = '<i>' + request + '</i>';
}
}

a1.php
Цитата

<?php
$name = $_POST['name'];
echo $name.' !!!!!';
?>

Все лежит в одной папке в денвере.

Спустя 33 минуты, 59 секунд (3.08.2011 - 09:47) Michael написал(а):
В функции process не нужна та проверка.
Проверка идет в функции прослушки ответов - Refresh

Спустя 9 минут, 32 секунды (3.08.2011 - 09:57) Michael написал(а):
по путям все нормально должно быть... У себя даже проверил твой пример - все ок.
Быстрый ответ:

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