Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.07.2008, 12:05
Новичок на форуме
Отправить личное сообщение для .mask Посмотреть профиль Найти все сообщения от .mask
 
Регистрация: 17.07.2008
Сообщений: 6

AJAX и PHP
Ребята, помогите..
Передомной стоит следующая задача:

Написать JS который обращается к *.php c GET параметрами и результат работы скрипта помещается

в <div /> на клиентской странице.

Написал следующее:

[Клиент]
<script type="text/javascript" src="http://***/my.js"></script>
<div id="myDiv" />



[my.js]
// holds an instance of XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();

// creates an XMLHttpRequest instance
function createXmlHttpRequestObject() 
{
  // will store the reference to the XMLHttpRequest object
  var xmlHttp;
  // this should work for all browsers except IE6 and older
  try
  {
    // try to create XMLHttpRequest object
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    // assume IE6 or older
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
    // try every prog id until one works
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
    {
      try 
      { 
        // try to create XMLHttpRequest object
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } 
      catch (e) {}
    }
  }
  // return the created object or display an error message
  if (!xmlHttp)
    alert("Error creating the XMLHttpRequest object.");
  else 
    return xmlHttp;
}


// called to read a file from the server

  // only continue if xmlHttp isn't void
  if (xmlHttp)
  {
    // try to connect to the server
    try
    {
      // initiate reading the my.php file from the server
      xmlHttp.open("GET", "http://***/my.php", true);
      xmlHttp.onreadystatechange = handleRequestStateChange;
      xmlHttp.send(null);
    }
    // display the error in case of failure
    catch (e)
 
    {
      alert("Can't connect to server:\n" + e.toString());
    }
  }

// function that handles the HTTP response
function handleRequestStateChange() 
{
  // obtain a reference to the <div> element on the page
  myDiv = document.getElementById(myDiv);
  // display the status of the request 
  if (xmlHttp.readyState == 1)
  {
    myDiv.innerHTML += "Request status: 1 (loading) <br/>";
  }
  else if (xmlHttp.readyState == 2)
  {
    myDiv.innerHTML += "Request status: 2 (loaded) <br/>";
  }
  else if (xmlHttp.readyState == 3)
  {
    myDiv.innerHTML += "Request status: 3 (interactive) <br/>";
  }
  // when readyState is 4, we also read the server response
  else if (xmlHttp.readyState == 4) 
  {
    // continue only if HTTP status is "OK"
    if (xmlHttp.status == 200) 
    {
      try
      {
        // read the message from the server
        response = xmlHttp.responseText;
        // display the message 
        myDiv.innerHTML += 
                      "Request status: 4 (complete). Server said: <br/>";
        myDiv.innerHTML += response;
      }
      catch(e)
      {
        // display error message
        alert("Error reading the response: " + e.toString());
      }
    } 
    else
    {
      // display status message
      alert("There was a problem retrieving the data:\n" + 
            xmlHttp.statusText);
    }
  }
}



[my.php]
<hr />
<?php echo "HELLO!" ?>
<hr />



Получается следующее:
Если клиентская страница на том же сервере, что и my.php (к которому обращается my.js) то все

нормально работает, а вот если клиентская страница на другом сервере, то, например Opera

конкретно отказывается все это дело проворачивать из за соображения безопасности.

Как же мне реализовать поставленную задачу?
Помогите плз...

Заранее спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2008, 12:15
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Получить данные с другого домена вот так вот в лоб не получится. Способ зависит в первую очередь от того, какой из доменов ваш.
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2008, 12:25
Новичок на форуме
Отправить личное сообщение для .mask Посмотреть профиль Найти все сообщения от .mask
 
Регистрация: 17.07.2008
Сообщений: 6

Сообщение от Kolyaj Посмотреть сообщение
Способ зависит в первую очередь от того, какой из доменов ваш.
Сервер где лежит my.js и my.php мой.
А клиенты с различных доменов должны видеть результат работы my.php
Ответить с цитированием
  #4 (permalink)  
Старый 17.07.2008, 13:16
Гость
 
Сообщений: n/a

Читай внимательно

http://ru.wikipedia.org/wiki/XMLHttpRequest

"К сожалению, XMLHTTP работает только с файлами, находящимися на том же домене, что и использующая XMLHTTP страница. Как и в случае JavaScript, это сделано в целях безопасности"
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2008, 13:20
Новичок на форуме
Отправить личное сообщение для .mask Посмотреть профиль Найти все сообщения от .mask
 
Регистрация: 17.07.2008
Сообщений: 6

Сообщение от Гость Посмотреть сообщение
Читай внимательно

http://ru.wikipedia.org/wiki/XMLHttpRequest

"К сожалению, XMLHTTP работает только с файлами, находящимися на том же домене, что и использующая XMLHTTP страница. Как и в случае JavaScript, это сделано в целях безопасности"
Я вобщето тоже самое и написал практически...
И как же тогда можно реализовать поставленную задачу?
Вот в чем вопрос, а не почему неработает такой способ с XMLHttpRequest.

Последний раз редактировалось .mask, 17.07.2008 в 13:23.
Ответить с цитированием
  #6 (permalink)  
Старый 17.07.2008, 13:30
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Вам XMLHttpRequest вообще не нужен, просто сделайте, чтобы my.php генерировал JavaScript-код, который будет нужную инфу в нужное место вставлять, а в my.js динамически создавайте элемент SCRIPT с соответствующим src.
Ответить с цитированием
  #7 (permalink)  
Старый 17.07.2008, 13:39
Новичок на форуме
Отправить личное сообщение для .mask Посмотреть профиль Найти все сообщения от .mask
 
Регистрация: 17.07.2008
Сообщений: 6

Сообщение от Kolyaj Посмотреть сообщение
my.php генерировал JavaScript-код, который будет нужную инфу в нужное место вставлять, а в my.js динамически создавайте элемент SCRIPT с соответствующим src.
что то неочнь понятно..
пожалуйста, можно поподробнее раскрыть тему?
Ответить с цитированием
  #8 (permalink)  
Старый 17.07.2008, 14:30
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

my.js
var s = document.createElement('SCRIPT');
s.type = 'text/javascript';
s.src = 'http://mydomain.ru/my.php';
document.body.appendChild(s);


my.php
<? echo "document.getElementById('myDiv').innerHTML = 'Hello'"; ?>
Ответить с цитированием
  #9 (permalink)  
Старый 17.07.2008, 14:43
Новичок на форуме
Отправить личное сообщение для .mask Посмотреть профиль Найти все сообщения от .mask
 
Регистрация: 17.07.2008
Сообщений: 6

респект!
Сообщение от Kolyaj Посмотреть сообщение
my.js
var s = document.createElement('SCRIPT');
s.type = 'text/javascript';
s.src = 'http://mydomain.ru/my.php';
document.body.appendChild(s);


my.php
<? echo "document.getElementById('myDiv').innerHTML = 'Hello'"; ?>
в IE все нормально функционирукет, а вот Opera не хочет...
в чем причина, помогите разобраться..

Последний раз редактировалось .mask, 17.07.2008 в 17:38.
Ответить с цитированием
  #10 (permalink)  
Старый 18.07.2008, 12:29
Новичок на форуме
Отправить личное сообщение для .mask Посмотреть профиль Найти все сообщения от .mask
 
Регистрация: 17.07.2008
Сообщений: 6

Разобрался, спасибо что помогли
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировка при использовании Ajax Nichloas AJAX и COMET 9 17.09.2009 16:06
AJAX и сессии nolka AJAX и COMET 10 16.05.2009 11:56
AJAX и БД SunYang AJAX и COMET 3 06.06.2008 22:44
Ajax & Autorun Ergall-M AJAX и COMET 11 08.05.2008 15:33
как дождаться AJAX ответа scuter Общие вопросы Javascript 3 23.03.2008 05:54