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

Форум PHP

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

 

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

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

тема: AJAX, как принять/отправить данные?
 
 автор: bartik   (17.08.2007 в 01:29)   письмо автору
 
 

Написал мини пример, кому не сложно прошу помочь...
Итак есть, страницы:

index.html

<form action="submit.php" method="POST">
<b>Заголовок:</b> <br><input type="text" name="name"> <br>
<b>Описание:</b> <br><textarea name="text"></textarea><br>
<input type="submit" value="Отправить">
</form>


А также:
submit.php

<?php
$name 
$_POST['name'];
$text $_POST['text'];
$query="insert into tbl values(0,'$name','$text')";
$ok=mysql_query($query) or die(mysql_error());
?>

Как с помощью аякса отправить данные, без обновления страницы?


===================================

А также вывод:
Есть скрипт:
<?
$result
=mysql_query("select * from tbl);
while(
$row=mysql_fetch_array($result)){
echo " 
<hrИмя$row[name] <brТекст$row[text] <hr>
}
?>
Вопрос состоит в том, как обновлять данные каждые 5 секунд, без перезагрузки страницы.

Выражаю большую благодарность! Тому кто поможет, очень хотелось бы освоить этот Аякс -)
Спасибо!

Я думаю эта тема пригодится не только мне, а многим с этого форума.
По поводу поиска, искал, ничего дельного не нашёл, кому не сложно помогите, отправлять в поиск не нужно...

   
 
 автор: Shiva   (17.08.2007 в 06:01)   письмо автору
 
   для: bartik   (17.08.2007 в 01:29)
 

По первому вопросу. В index.html:

<form id="form_1" action="submit.php" method="POST"> 
    <b>Заголовок:</b> <br><input type="text" name="name"> <br> 
    <b>Описание:</b> <br><textarea name="text"></textarea><br> 
    <input type="submit" value="Отправить"> 
</form> 
<script type="text/javascript">
    <!--
        function setRequestMode(form)
        {
            form.onsubmit = function()
            {
                vars = new Array();
                for(i=0; i<this.elements.length; i++)
                {
                    vars[vars.length] = this.elements[i].name + "=" + this.elements[i].value;
                }                
                
                var ajax = document.all ? new ActiveXObject("Msxml2.XMLHTTP") : new XMLHttpRequest();        
                ajax.open("POST", this.action);        
                ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=windows-1251");
                ajax.send(vars.join("&"));    
                return false;
            }
        }
        
        setRequestMode(document.getElementById('form_1'));
    //-->
</script>


По второму.
В файле интерфейса:

<div id="data"></div>
<script type="text/javascript">
    <!--
        function getData()
        {
            var ajax = document.all ? new ActiveXObject("Msxml2.XMLHTTP") : new XMLHttpRequest();        
            var now = new Date();
            ajax.open("GET", "http://site.ru/script.php?noCashe="+now.getMilliseconds());
            ajax.onreadystatechange = function() 
            {
                if(ajax.readyState == 4)
                {
                    document.getElementById("data").innerHTML = ajax.responseText;
                    setTimeout("getData()", 500);
                }
            }
            ajax.send(null);    
        }
        
        getData();
    //-->
</script>


В script.php - ваш код, только без опечаток:

<? 
$result
=mysql_query("select * from tbl"); 
while(
$row=mysql_fetch_array($result))

    echo 
" <hr> Имя: $row[name] <br> Текст: $row[text] <hr>";

?> 




Еще учтите, что русские симолы будут подгружены некорректно. Их придется кодировать на стороне сервера и раскодировать у клиента.

ps. Код не годится для Оперы. Делается ли там это и как - понятия не имею. Я для Оперы писал дублирующий код с невидимым фреймом. Еще есть кроссбраузерная библиотека Дмитрия Котерова (http://dklab.ru), реализующая псевдопротокол JsHttpRequest посредством динамической генерации тега <script>.

   
 
 автор: bartik   (17.08.2007 в 13:03)   письмо автору
 
   для: Shiva   (17.08.2007 в 06:01)
 

Первый пример у меня не работает, нажимаю отправить, ноль внимания.
Может быть где-то ошибка?

-------
За второй пример большое спасибо, всё работает!

   
 
 автор: Shiva   (17.08.2007 в 14:01)   письмо автору
 
   для: bartik   (17.08.2007 в 13:03)
 

Я проверил, у меня работают оба.

Поместите в целевой файл:

<?php
ob_start
();
print_r($_POST);
$content ob_get_contents();
$open fopen('test.txt''w');
fwrite($open$content);
fclose($open);
?>


И протестируйте. Должен появиться файл test.txt с распечаткой массива $_POST.

Файлы index.html и submit.php лежат в одной папке?

   
 
 автор: bartik   (17.08.2007 в 18:40)   письмо автору
 
   для: Shiva   (17.08.2007 в 14:01)
 

Прошу прощения всё работает, просто хотелось бы какую нибудь надпись чтоли, что запись добавилась.. А то не понятно...

   
 
 автор: Shiva   (17.08.2007 в 20:17)   письмо автору
 
   для: bartik   (17.08.2007 в 18:40)
 


        function setRequestMode(form)
        {
            form.onsubmit = function()
            {
                vars = new Array();
                for(i=0; i<this.elements.length; i++)
                {
                    vars[vars.length] = this.elements[i].name + "=" + this.elements[i].value;
                }                
                
                var ajax = document.all ? new ActiveXObject("Msxml2.XMLHTTP") : new XMLHttpRequest();        
                var now = new Date();
                ajax.open("POST", this.action);
                ajax.onreadystatechange = function() 
                {
                    if(ajax.readyState == 4)
                    {
                        alert("ok");
                    }
                }                
                ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=windows-1251");
                ajax.send(vars.join("&"));    
                return false;
            }
        }

   
 
 автор: bartik   (18.08.2007 в 00:20)   письмо автору
 
   для: Shiva   (17.08.2007 в 20:17)
 

Благодарю за помощь.

   
Rambler's Top100
вверх

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