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

HTML+CSS+JavaScript

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: помогите советом с Ajax

Сообщения:  [1-7] 

 
 автор: bibika   (10.10.2011 в 16:55)   письмо автору
 
   для: bibika   (30.09.2011 в 13:10)
 

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

Спасибо

  Ответить  
 
 автор: bibika   (30.09.2011 в 13:10)   письмо автору
 
   для: bibika   (29.09.2011 в 22:47)
 

Всем спасибо
Разобрался с помощью гугления. Все решилось просто, может это неверное решение, но какое есть:

в файл submit.php добавил перекодировку перед занесением информации в базу

$name = $_POST['name'];
$text = $_POST['text'];

$name=iconv('UTF-8', 'windows-1251', $_POST['name']);
$text=iconv('UTF-8', 'windows-1251', $_POST['text']);

$query="insert into tbl values(0,'$name','$text')";

В результате в базе данные в нормальной кодировке и выводятся они тоже нормально в браузер.

Еще раз спасибо

  Ответить  
 
 автор: bibika   (29.09.2011 в 22:47)   письмо автору
 
   для: TavRoX   (29.09.2011 в 22:43)
 

Аякс работает с кодировкой windows-1251, просто он автоматом переводит все в UTF-8, проблема в том, как перевести все в исходную кодировку, при отображение на странице.

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

  Ответить  
 
 автор: TavRoX   (29.09.2011 в 22:43)   письмо автору
 
   для: bibika   (29.09.2011 в 22:15)
 

и страница и данные должны быть в утф8
аякс не работает с виндоус

  Ответить  
 
 автор: bibika   (29.09.2011 в 22:15)   письмо автору
 
   для: cheops   (29.09.2011 в 20:20)
 

Что-то я не понял уважаемый cheops.

По идее нужно преобразовать данные которые выдает скрипт при выдаче результата на странице. Вот эта часть кода:

while($row= iconv ('UTF-8','WINDOWS-1251', mysql_fetch_array($result))

А так данные приходят в формате WINDOWS-1251, передаются в 'UTF-8, а на результате вывода нужно их поменять в WINDOWS-1251. Так я понимаю этот процесс.

  Ответить  
 
 автор: cheops   (29.09.2011 в 20:20)   письмо автору
 
   для: bibika   (29.09.2011 в 18:54)
 

Что можно преобразовать в UTF-8, а что нельзя? Например обработчик можно преобразовать?

  Ответить  
 
 автор: bibika   (29.09.2011 в 18:54)   письмо автору
 
 

Пробую разобраться с Ajax на простом примере, столкнулся с одной проблемой, кодировкой. Помогите что поправить в тексте скрипта. Писать все в UTF-8 не представляется возможным.
Код;
файл с формой

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>

<body>

<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.onreadystatechange = function() 
                {
                    //Вивод повідомлення про Ок
                    if(ajax.readyState == 4)
                    {
                        
                    }
                }                 
                
                ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;
charset=windows-1251");
                ajax.send(vars.join("&"));    
                return false;
            }
        }
        
        setRequestMode(document.getElementById('form_1'));
    //-->
</script> 

</body>

</html>


код обработчика

<?php
header
("Content-type: text/html; charset=windows-1251");
$host="localhost";
$user="root";
$passw="";
$dbase="proba";
$table="tbl";
/*зєднання з БД*/
$db=mysql_connect($host,$user,$passw) or die ("<font color='red'>
Неможливо встановити з'єднання з базою даних. Зверніться до адміністратора.</font>"
);
/*вибір БД*/
mysql_select_db($dbase) or die ("<font color='red'>База даних зараз недоступна. Зверніться до адміністратора.</font>");


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


код вывода

<? 
header
("Content-type: text/html; charset=windows-1251");
$host="localhost";
$user="root";
$passw="";
$dbase="proba";
$table="tbl";
/*зєднання з БД*/
$db=mysql_connect($host,$user,$passw) or die ("<font color='red'>
Неможливо встановити з'єднання з базою даних. Зверніться до адміністратора.</font>"
);
/*вибір БД*/
mysql_select_db($dbase) or die ("<font color='red'>База даних зараз недоступна. Зверніться до адміністратора.</font>");
$result=mysql_query("select * from tbl"); 

while(
$rowiconv ('UTF-8','WINDOWS-1251'mysql_fetch_array($result)))

    echo 
" <span style='background-color:violet;'>ID: $row[id]</span> <hr> Имя: $row[name] <br> Текст: $row[text] <hr>";




?> 
<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://proba/ajax/vyvod.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> 

  Ответить  

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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