Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PHP & AJAX тонкости дела
 
 автор: ozono   (30.12.2006 в 10:47)   письмо автору
 
 

Вот решил уж занятся исследованием работ аякс и пхп

в этих делах не мало тонкостей которых я бы хотел тут раскрыть

1, какие файлы не обхадимо иметь чтоб аякс работал на странице?

2, Лучшая книга которую вы советуете для изучения аякс и пхп?

3, Простой пример нужен чтоб при нажатии на ссылку инклудировался файл на страницу


ВСЕ ТЕ КТО ЗНАЮТ АЯКС И ПХП, ЗНАТОКИ ЭТОГО ДЕЛА ПОМОГИТЕ В ЭТИХ ДЕЛАХ И НАМ РАЗОБРАТЬСЯ!!!!!!!

   
 
 автор: coloboc66   (30.12.2006 в 11:03)   письмо автору
 
   для: ozono   (30.12.2006 в 10:47)
 

код запроса к серверу (отправки данных - методы open() и send() объекта XMLHTTPRequest) и вывода данных от сервера на страницу (свойство responseText или responseXML объекта XMLHTTPRequest) пишется на ява-скрипт . РНР-скрипт занимается обработкой полученных от броузера данных и отправкой ответа броузеру (например echo $file).

   
 
 автор: XPraptor   (31.12.2006 в 04:43)   письмо автору
 
   для: coloboc66   (30.12.2006 в 11:03)
 

Тема называется PHP и JS функции тут http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=27790&page=1

Я там дал человеку пример как делать фоновые запросы без HTTPRequest на чва и пхп.

Я много писал раньше локально на C++ под XMLServer и HTTPRequest. Позже винда получила новый элемент WinHTTP он намного круче стал чем предыдущие. Но это все только если у юзера есть эти контролы. Плюс очень трудно включить разрешения на их использование в IE. Поэтому goto в тему, которую я указал и смотрим как делать типа AJAX но без этих контролов.

   
 
 автор: ozono   (02.01.2007 в 20:51)   письмо автору
 
   для: XPraptor   (31.12.2006 в 04:43)
 

спасибо! может все таки несколько примеров мы сможем тут обсудить????

было бы классно с примером вместе!

   
 
 автор: XPraptor   (03.01.2007 в 17:38)   письмо автору
 
   для: ozono   (02.01.2007 в 20:51)
 

В принципе, метод банален и прост. Ява скрипт умеет загружаться из файла с любым расширением. Поэтому можно это использовать. Мы именно яваскриптом же создаем код ява скрипта с url нужного нам php файла на сервере. А на сервере уже творим что хотим. Единственное, когда закончим на сервере обработку, то в конце в выдачу не забываем дописать ява код, который уже придя к клиенту выполнится и вставит результаты обработки в нужное место. Когда ява скрипт подгружается из внешнего файла, он не перегружает страницу этим мы и пользуемся ИМХО, просто как лыжи.

   
 
 автор: ozono   (08.01.2007 в 14:00)   письмо автору
 
   для: XPraptor   (03.01.2007 в 17:38)
 

вот например я хочу чтоб при нажатии ссылки http://test1.ru/?file=test.txt
хотелось бы чтоб инклудировался файл test.txt без обновления!!

помогите чтоб мне была ясна эта технология!!!!!

   
 
 автор: XPraptor   (08.01.2007 в 17:30)   письмо автору
 
   для: ozono   (08.01.2007 в 14:00)
 

Да что угодно можете выводить. Идите в тему которую я указал выше и берите код ява файла.
Когда ява отправит запрос к вашему обработчику - файлу php, в нем вы и инклюдите файл.
Вот примерный код вашего обработчика - файла php:

<?php
if(isset($_GET["file"]) && !empty($_GET["file"]))
{
    
//если файл лежит в корне то пишем путь к нему, или любой другой путь
    
$flname=$_SERVER["DOCUMENT_ROOT"] . "/" strval($_GET["file"]);
    
$file_text=file_get_contents($flname);
    
//теперь текст файла в этой переменной, именно ее мы и будем вставлять на страницу
    //если в файле нет html тэгов то можно просто присвоить элементу в который вставляем как innerText.
    //если есть html тэги, то нужно вставить методом insertAdjacentHTML
?>
//это ява скрипт, который придя к клиенту вставит ваш текст в указанный элемент (например div, или td) с id="insert_here" (который должен быть прописан в вашей странице заранее)
//получаем элемент по его ИД:
var elm=document.GetElementByID("insert_here");
//можно предварительно очистить уже имеющийся там текст вот так:
elm.InnerHTML="";
//теперь вставляем html
elm.insertAdjacentHTML "beforeEnd", '<?php print html_entity_decode($file_text); ?>';
//или просто присвоим текст:
elm.innerText='<?php print $file_text?>';
<?php
}
?>

   
 
 автор: ozono   (09.01.2007 в 11:01)   письмо автору
 
   для: XPraptor   (08.01.2007 в 17:30)
 

при выполнении того кода что Вы сказали и + мое дополнение


<a href="?file=file.txt">FILE</a>
<br><br><br>
<div id="insert_here">DIV PLACE</div>


<?php
if(isset($_GET["file"]) && !empty($_GET["file"]))
{

    
$flname=$_SERVER["DOCUMENT_ROOT"] . "/" strval($_GET["file"]);
    
$file_text=file_get_contents($flname);

?>



var elm=document.GetElementByID("insert_here");

elm.InnerHTML="";

elm.insertAdjacentHTML "beforeEnd", '<?php print html_entity_decode($file_text); ?>';

elm.innerText='<?php print $file_text?>';

<?php
}
?>



получается вот такая вешь на странице:

----------------------------------------------------------------------------
FILE


DIV PLACE
var elm=document.GetElementByID("insert_here"); elm.InnerHTML=""; elm.insertAdjacentHTML "beforeEnd", 'READ=======vnutrennost fayla txt!!!!!!!!!!'; elm.innerText='READ=======vnutrennost fayla txt!!!!!!!!!!';
----------------------------------------------------------------------------

внутри файла тхт у меня вот это (READ=======vnutrennost fayla txt!!!!!!!!!!)


может джаву вписать в эти теги <script> </script> ???????

что то все не так?!

подскажи как дальше быть................

   
 
 автор: ozono   (10.01.2007 в 11:38)   письмо автору
 
   для: XPraptor   (08.01.2007 в 17:30)
 

Будут ли новые ответы??? скажите что не так в скрипте что в страничке даже джава коды видны!?

   
 
 автор: coloboc66   (10.01.2007 в 14:10)   письмо автору
 
   для: ozono   (10.01.2007 в 11:38)
 

Ну а вы заключили ява-скрипты в соответствующие теги? И как вы их вызываете?

   
 
 автор: ozono   (11.01.2007 в 14:00)   письмо автору
 
   для: coloboc66   (10.01.2007 в 14:10)
 

если вы можете поправить поправте плиз..... я постралася включить в теги <script> и чтоб далее ее вызвать ссылкой .... но у меня ничего не получилось


ну короче вот так


<a href="#" onClick="zz()">FILE</a>
<br><br><br>
<div id="insert_here">DIV PLACE</div>


<?php

    $flname
="file.txt";
    
$file_text=file_get_contents($flname);

?>


<script>
function zz(){
var elm=document.GetElementByID("insert_here");

elm.InnerHTML="";

elm.insertAdjacentHTML "beforeEnd", '<?php print html_entity_decode($file_text); ?>';

elm.innerText='<?php print $file_text?>';
}
</script>




выдает ошибку


как исправить все это???

   
 
 автор: ozono   (12.01.2007 в 14:36)   письмо автору
 
   для: XPraptor   (08.01.2007 в 17:30)
 

что я не так сдела???? помогите?!!!!!!

   
 
 автор: coloboc66   (13.01.2007 в 10:31)   письмо автору
 
   для: ozono   (12.01.2007 в 14:36)
 

У вас тут аяксом и не пахнет. Вам же писали: идите в соответствующую тему и возьмите оттуда код для аякса.
Алгоритм примерно таков:
Файл index.htm

<a id="1" href="#" onClick=ajax("file.php?file="+this.id)>FILE</a> 
<br><br><br> 
<div id="insert_here">DIV PLACE</div> 
<script> 
function ajax(url)
{
if (window.XMLHttpRequest)
       {
        req = new XMLHttpRequest();
        req.onreadystatechange =  function {  if (req.readyState == 4) {  zz();    }       }
        req.open("GET", url, true);
        req.send(null);
       }
     else if (window.ActiveXObject)
         {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = function {  if (req.readyState == 4) {  zz();    }       }
            req.open("GET", url, true);
            req.send();
                }
       }    
}
function zz(){ 
var elm=document.GetElementByID("insert_here"); 
elm.InnerHTML=""; 
elm.innerText=req.responseText;

</script> 

Файл file.php

<?php 
    $flname
=$_SERVER["DOCUMENT_ROOT"] . "/" strval($_GET["file"]); 
    
$file_text=file_get_contents($flname); 
    print 
html_entity_decode($file_text); 
?> 

Вы пытаетесь с налету написать код для аякса, даже не поняв сути аякса.

   
 
 автор: ozono   (13.01.2007 в 20:19)   письмо автору
 
   для: coloboc66   (13.01.2007 в 10:31)
 

Спасибо....... вы поймите я так много прочтал по аякс и совсем разное применил что голова трещит........

вот например есть ajax , есть sajax, есть xajax не знаю на чем правильно остановиться и что делать!!!!!

я шас пишу работая модулем саякс но вот хочется видеть много примеров и понять удобство и разницу этих трех вещей!

прошу не сердится и помочь мне в этом. Я сам программирую на пхп и думаю пора мне выбрать так начем из этих трех работать зная что основа всего аякс!

я проверю все что вы дали и напишу если что не так.............

заранее благодарю за терпение

   
 
 автор: coloboc66   (14.01.2007 в 00:27)   письмо автору
 
   для: ozono   (13.01.2007 в 20:19)
 

ajax, sajax, xajax - херота это все. Есть 15 строк кода, и все будет работать.
Смотрите выше - там все написано.

   
 
 автор: himic   (15.01.2007 в 11:24)   письмо автору
 
   для: coloboc66   (14.01.2007 в 00:27)
 

Люди Люди!!!!
Я не понимаю почему это аякс????? Это же обычный ява скрипт
Я это дело называю динамической подкачкой данных(ДПД)
Кто то ляпнул аякс и пошло поехало, называйте вещи своими словами...
тут попросту используется Microsoft.XMLHTTP - стандартная виндовая штука, у которой есть методы и свойства

   
 
 автор: ozono   (15.01.2007 в 11:27)   письмо автору
 
   для: himic   (15.01.2007 в 11:24)
 

и что ты называешь аякс и как решить это дело с помощью твоего аякса????

даш пример?

   
 
 автор: himic   (15.01.2007 в 11:32)   письмо автору
8 Кб
 
   для: ozono   (15.01.2007 в 11:27)
 

Вот библиотека одного мэна(файл прикриплён) я её чуть подстрогал, чтобы всё выглядело просто
Закидывайте в любое место и пользуйтесь и изменяйте на здоровье

   
 
 автор: himic   (15.01.2007 в 11:56)   письмо автору
 
   для: himic   (15.01.2007 в 11:32)
 

И кто там пример давал??
там полно ошибок, к регистру между прочем чувствительны методы

   
 
 автор: Trianon   (15.01.2007 в 11:57)   письмо автору
 
   для: himic   (15.01.2007 в 11:32)
 

Хорошо подстрогали.... так, что без пароля закинуть можно разве что в трэш...

   
 
 автор: himic   (15.01.2007 в 12:55)   письмо автору
 
   для: Trianon   (15.01.2007 в 11:57)
 

пардон братья, пароль 123 ;D
Вот совсем простой пример, сам токо что накалякал
есть текстовое поле, вводите текст и этот текст записывается в файл(только для IE)

можно поэксперементировать с созданием объектов
request = new XMLHttpRequest()
request = new ActiveXObject("Microsoft.XMLHTTP")
request = new ActiveXObject("Msxml2.XMLHTTP")
А можно сделать и все сразу три по условию и это будет для всех браузеров

   
 
 автор: coloboc66   (15.01.2007 в 13:59)   письмо автору
 
   для: himic   (15.01.2007 в 12:55)
 

AJAX - это action java script + XMLHTTPRequest. Все правильно называется - аякс.

   
 
 автор: himic   (15.01.2007 в 15:04)   письмо автору
 
   для: coloboc66   (15.01.2007 в 13:59)
 

типа по первым буквам???!!!!!
тогда я уже озвучил своё название ДПД
я люблю русский язык

   
 
 автор: malish   (15.01.2007 в 15:28)   письмо автору
 
   для: himic   (15.01.2007 в 15:04)
 

А я почему то думал что AJAX - это Asynchronic Javascript and XML

   
 
 автор: coloboc66   (15.01.2007 в 15:39)   письмо автору
 
   для: malish   (15.01.2007 в 15:28)
 

to malish: может быть и так - принципиальной разницы нет, по-моему. XMLHTTPRequest по определению подразумевает работу с XML - документом.

   
 
 автор: malish   (15.01.2007 в 16:15)   письмо автору
 
   для: coloboc66   (15.01.2007 в 15:39)
 

но одним из главных слов тут все таки является Asynchronic - определяющее всю суть данной технологии

   
 
 автор: coloboc66   (15.01.2007 в 20:45)   письмо автору
 
   для: malish   (15.01.2007 в 16:15)
 

А чем отличается Asynchronic от обычного ява-скрипт? Принципиальной разницы как-то не увидел. Ставишь true, ставишь false - все одинаково...

   
 
 автор: coloboc66   (15.01.2007 в 15:37)   письмо автору
 
   для: himic   (15.01.2007 в 15:04)
 

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

   
 
 автор: himic   (16.01.2007 в 07:33)   письмо автору
 
   для: coloboc66   (15.01.2007 в 15:37)
 

Ну ладно, Бог с этими названиями
Я вот хочу разобраться с этими объектами

request = new XMLHttpRequest()
request = new ActiveXObject("Microsoft.XMLHTTP")
request = new ActiveXObject("Msxml2.XMLHTTP")

Почитать может что про них, они как бы одно и тоже, только для разных браузеров?

   
 
 автор: coloboc66   (16.01.2007 в 09:15)   письмо автору
 
   для: himic   (16.01.2007 в 07:33)
 

Да -одно и то же, только для разных броузеров. Два последних для ИЕ.

   
 
 автор: himic   (16.01.2007 в 09:22)   письмо автору
 
   для: coloboc66   (16.01.2007 в 09:15)
 

Вот, теперь нужно узнать что они могут эти объекты
open
send
........

Если что я пытаюсь тему развить...

   
 
 автор: coloboc66   (16.01.2007 в 09:59)   письмо автору
 
   для: himic   (16.01.2007 в 09:22)
 

open() - открыть соединение с сервером
send() - отправить данные на сервер

   
 
 автор: himic   (16.01.2007 в 12:32)   письмо автору
 
   для: coloboc66   (16.01.2007 в 09:59)
 

Поехало!
readyState
0 = uninitialized
1 = loading
2 = loaded
3 = interactive
4 = complete
abort()
Прервать запрос
getAllResponseHeaders()
Возвращает заголовки результата
X-Powered-By: PHP/5.2.0 Content-Length: 7 Keep-Alive: timeout=5, max=99 Content-Type: text/html
getResponseHeader("headerLabel")
Возвращает заголовок по метке
setRequestHeader("label", "value")
Назначает метка/переменная в запросе
onreadystatechange
Это свойство - хендлер события, которое запускается всякий раз, когда меняется состояние объекта
status
HTTP статус ответа - код 404 означает "файл не найден" и 500 - "произошла ошибка на сервере". Но нам нужен старый добрый код 200 ("все ОК"), который означает, что на сервере наш запрос был успешно выполнен.
responseText - возвращает результат

responseXML - фиг его не знает как им пользоваться

   
 
 автор: ozono   (16.01.2007 в 14:03)   письмо автору
 
   для: himic   (16.01.2007 в 12:32)
 

спасибо....... мне понравилось все это .... все работает........ я проверил твой скрипт и под мозилу классно работает................ помоги мне со своими знаниями..........


очень нужна твоя помощь........ чтоб и до меня дошло как пользоваться что делать какие данные и как отправляются




вот что в принципе надо:




у меня есть ссылка <a href="#" onClick="link('text')">FILE</a> после нажатии чтоб скрипт прочитал файл   text.txt   и  вставил бы прочитанное в  <div id="insert_here">DIV PLACE</div>  без перезагрузки страницы............................................... и так далее зависимости что внутри link('text')

   
 
 автор: himic   (16.01.2007 в 14:39)   письмо автору
 
   для: ozono   (16.01.2007 в 14:03)
 

Чуть помучался, держи, надеюсь разберёшь

   
 
 автор: XPraptor   (17.01.2007 в 05:15)   письмо автору
 
   для: himic   (16.01.2007 в 14:39)
 

Вот приложил пример с детальными описаниями. Распакуй всю папку jvs на свой виртуальный сервер в какой нить сайт и вызови тестовый файл со своего хоста например: http://www.virt_host.ru/jvs/test.html

Перед этим в файлах urljava.js и phpreader.php замени пути к твоему виртуальному хосту, там они в комментах прописаны где нужно менять.

   
 
 автор: himic   (17.01.2007 в 06:39)   письмо автору
 
   для: XPraptor   (17.01.2007 в 05:15)
 

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

   
 
 автор: coloboc66   (17.01.2007 в 09:40)   письмо автору
 
   для: himic   (16.01.2007 в 12:32)
 

responseXML - возвращает результат в виде XML- документа, в то время как responseText возвращает результат в текстовом виде. Вот и вся разница, насколько я понимаю.

   
 
 автор: XPraptor   (17.01.2007 в 11:26)   письмо автору
 
   для: coloboc66   (17.01.2007 в 09:40)
 

to: himic
Именно. Это как раз кросплатформенный метод для простых задач фоновой подгрузки. Если задача очень круто стоит, то нужно юзать полный AJAX через XMLHTTPRequest, а все остальное делается прекрасно этим методом безо всяких дополнительных контролов.

А так пользователю постоянно нужно выводить предупреждение о не готовности его системы к использованию сайта, а пользователи этого не любят - и почти с 99% вероятностью уйдут с такого сайта.

   
 
 автор: himic   (17.01.2007 в 13:19)   письмо автору
 
   для: XPraptor   (17.01.2007 в 11:26)
 

to:XPraptor
у обычных пользователей по статистике, стоит Экспроллер у более таких Опера
у этих браузеров проблем вроде никаких нет, всё по умолчанию работает
Вот с ФайырФоксом проблемы, нужно разрешить использование этих объектов- вот с ними и возникает проблема...блин могу сказать
Тут статистика>>>> http://zero.kz/graph/browser/

   
 
 автор: coloboc66   (17.01.2007 в 13:39)   письмо автору
 
   для: himic   (17.01.2007 в 13:19)
 

По-моему тоже: у основных браузеров (ИЕ и Опера) нет особых проблем с XMLHTTPRequest.
to XPraptor: и все же смею утверждать, что ваш последний архив совершенно не есть аякс.

   
 
 автор: XPraptor   (17.01.2007 в 14:16)   письмо автору
 
   для: coloboc66   (17.01.2007 в 13:39)
 

to: coloboc66
Млина ты читаешь топики? Я что говорю что это аякс? Наоборот я говорю что аякс нужен очень редко ,он громоздкий, плюс не кроссовый, а это решение безо всяких аяксов и очень короткое годится для 96% задач, которые нужны для фоновой подгрузки.

to: hmic
Нету в виндах младше 2000 sp3 - xml библиотек, только после доустановки. Поэтому там вообще работать не будет ни в одном браузере.

   
 
 автор: himic   (17.01.2007 в 14:45)   письмо автору
 
   для: XPraptor   (17.01.2007 в 14:16)
 

ту: XPraptor
>>Нету в виндах младше 2000 sp3 - xml библиоте
Ну ничё, скоро младше уже и не останется систем
А что ты скажешь насчёт других систем, они там есть?

Да насчёт того, что в методе "вставки скрипта" нельзя засечь, когда данные приняты и можно начинать приём/отправку следующих
Я тут подумал, а ведь можно поставить флаги, данные отправлены и приняты, с сервера должен будет придти ответ: я принял, всё...следущая партия

ПС Админам: даёте постраничную навигацию??????!!!!!!!!!!!

   
 
 автор: malish   (17.01.2007 в 14:51)   письмо автору
 
   для: himic   (17.01.2007 в 14:45)
 

Читаю я вот ваши посты... вы сами то помните с чего то весь базар пошел? :):):)

   
 
 автор: XPraptor   (17.01.2007 в 14:57)   письмо автору
 
   для: malish   (17.01.2007 в 14:51)
 

to: himic
Почему нельзя засечь то? Делай себе любого вида засекатель и отправляй по очереди. НО ИМХО не понимаю для чего, наоборот хорошо когда все движется асинхронно. Конечный вывод добавляет результаты в конец div-a, имхо отправляй несколько запросов, даже если один из них выполниться раньше чем предыдущий, и выведется перед ним, тут никакого страха нет по идее. Если речь про чат - то тут наверное нужно следить, хотя тоже разницы нет каким по счету увиит пользователь ответ от товарища.

   
 
 автор: cheops   (17.01.2007 в 15:29)   письмо автору
 
   для: himic   (17.01.2007 в 14:45)
 

>ПС Админам: даёте постраничную навигацию??????!!!!!!!!!!!
Под новые вопросы просто лучше заводить новые темы...

   
 
 автор: himic   (18.01.2007 в 06:11)   письмо автору
 
   для: cheops   (17.01.2007 в 15:29)
 

А вот в ФайырФоксе по умолчанию не разрешено использовать XMLHttpRequest,
хотя он создаётся и на запрос
if(window.XMLHttpRequest) он выдаёт что всё ништяк
как разрешить это, как узнать что подгрузка данных запрещена?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования