Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: ajax, вывод из формы...
Форумы портала PHP.SU » » Вопросы новичков » ajax, вывод из формы...

Страниц (2): [1] 2 »
 

1. MBmusic - 11 Марта, 2012 - 15:21:22 - перейти к сообщению
в общем такая проблема......есть форма куда мы чтото записываем, потом это дело записывается в базу а затем выводится из нее сразу под формой куда мы писали чтото......все это делается через аякс......но проблема состоит в том что если обновить страницу то приложение перестанет работать, а если не обновлять а просто закрывать браузер и открывать снова то все ок работает......

файл с ajax скриптом:
CODE (htmlphp):
скопировать код в буфер обмена
  1. function send()
  2. {
  3. //Получаем параметры
  4. var data = $('#mydata').val()
  5.   // Отсылаем паметры
  6.        $.ajax({
  7.                 type: "POST",
  8.                 url: "SendData.php",
  9.                 data: "data="+data,
  10.                 // Выводим то что вернул PHP
  11.                 success: function(html) {
  12.  //предварительно очищаем нужный элемент страницы
  13.                         $("#result").empty();
  14. //и выводим ответ php скрипта
  15.                         $("#result").append(html);
  16.                 }
  17.         });
  18.  
  19. }


файл с php скриптом:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //Получаем данные
  3. $data = $_POST[data];
  4. //Так как все данные приходят в кодировке UTF при необходимости
  5. //их можно/нужно конвертировать в нужную, но мы этого делать не будем
  6.  
  7. //$data = iconv("utf-8", "windows-1251", $data);
  8.  
  9. //подключаемся к базе
  10. include 'config.php';
  11. $queryreg = mysql_query("INSERT INTO new (data) VALUES ('$data')") or die (mysql_error());
  12.  
  13. /*
  14. тут можно делать все что угодно с полученными данными, а мы их просто выведем на печать.
  15. */
  16.  
  17. echo "А вот то что мы отправили<br>".$data;
  18.  
  19. ?>


файл с формой и тд:
CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Отправка формы Ajax</title>
  5. <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js' type='text/javascript'></script>
  6. <script type="text/javascript" src="ajax.js"></script>
  7. </head>
  8.  
  9. <body>
  10.  
  11. <form action="" id="myform">
  12. <input type="text" name="mydata" id="mydata" />
  13. <input type="button" onclick="send();" value="Отправить" />
  14. </form>
  15. <div id="result"></div>
  16. </body>
  17. </html>

(Добавление)
и вообще, может у когото есть примерчики какие нить подобные......просто надоело уже когда при отправки данных через форму перезагружается страница а не приложение, не удобно както получается(
2. Panoptik - 11 Марта, 2012 - 15:36:23 - перейти к сообщению
а что значит что скрипт не работает при перезагрузке?
3. MBmusic - 11 Марта, 2012 - 15:59:30 - перейти к сообщению
в смысле ничего не выводит...((
4. DelphinPRO - 11 Марта, 2012 - 16:02:16 - перейти к сообщению
MBmusic пишет:
просто надоело уже когда при отправки данных через форму перезагружается страница а не приложение


вешайте функцию send() на onsubmit() формы и возвращайте false? чтобы запретить отправку формы
5. MBmusic - 11 Марта, 2012 - 16:21:10 - перейти к сообщению
а можно ли сделать средствами php так что бы при отправке из формы данных пользователя не перекидовало в начало страницы при перезагрузке страницы?? ну типо результат тот же что и от аякса но перегружает всю страницу?) ну походу ж никак нельзя))...
6. DelphinPRO - 11 Марта, 2012 - 16:31:10 - перейти к сообщению
поставьте якорь <a name="form"></a> перед формой
и редиректите на file.php#form

если я правильно понял
7. MBmusic - 11 Марта, 2012 - 16:41:16 - перейти к сообщению
эмм не совсем понял что вы мне хотели сказать......например вот у меня есть форма:
CODE (html):
скопировать код в буфер обмена
  1. <div class="post_div">
  2. <form action="" name="post" method="post" enctype="multipart/form-data">
  3.    <table>
  4.      <tr>
  5.          <td><font>Тема:</font></td>
  6.      <td><input style="width:423px;" type="text" name="post_name"></td>
  7.          </tr>
  8.          <tr>
  9.          <td><font>Зміст:</font></td>
  10.          <td><textarea size="35" type="text" rows="10" cols="50" name="post"></textarea></td>
  11.          </tr>
  12.          <tr>
  13.          <td></td>
  14.          <td><input type="submit" value="Відправити на стіну" name="submit"></td>
  15.          </tr>
  16.    </table>
  17. </form>
  18. </div>


что и где поменять нужно или дописать?
8. DelphinPRO - 11 Марта, 2012 - 16:51:13 - перейти к сообщению
давайте сначала определимся, правильно ли я понял Улыбка
вы хотите чтобы после нажатия на кнопку, форма отправлялась, страница обновлялась и сразу же прокручивалась к форме. (если например страница большая а форма внизу)?
9. MBmusic - 11 Марта, 2012 - 16:52:32 - перейти к сообщению
да!!) именно так и надо!
10. DelphinPRO - 11 Марта, 2012 - 16:55:40 - перейти к сообщению
CODE (html):
скопировать код в буфер обмена
  1. <a name="form"></a>
  2. <form action="" name="post" method="post" enctype="multipart/form-data">
  3. ...

(Добавление)
а в php пишешь (пусть файл с формой например называется index.php)
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['post'])) {
  2.       // тут обработка даных
  3.       // после всех действий
  4.       header ('Location: index.php#form');
  5. }
11. MBmusic - 11 Марта, 2012 - 17:14:10 - перейти к сообщению
ну у меня тут вот например php и html идет вместе...

PHP:
скопировать код в буфер обмена
  1.                             <?PHP
  2.                  
  3.                 $com_name = $_POST['com_name'];
  4.                 $com_post = nl2br($_POST['com_post']);
  5.                 $com_submit = $_POST['com_submit'];
  6.  
  7.                 $date_com = date("d.m.y");
  8.                 $date_time_com = date("G:i");
  9.                
  10.                                
  11.                 if ($com_submit)
  12.                 {
  13.                    if ($com_name&&$com_post)
  14.                    {                                 
  15.                                       $queryreg = mysql_query("INSERT INTO comments (name, text, date, date_time, post_id) VALUES ('$com_name', '$com_post', '$date_com', '$date_time_com', '$post_id')") or die(mysql_error());
  16.                       ?>    <script> location.replace(window.location); </script><?PHP
  17.                                    }   
  18.                    else
  19.                    {
  20.                           echo "<div style='color:red'>Не все поля заполнены!</div>";
  21.                    }     
  22.                 }
  23.  
  24.                 ?>
  25.                                 <a name="form"></a>
  26.                                 <form action="" name="post" method="post">
  27.                   <table>
  28.                                   <tr>
  29.                                      <td>Ваше имя:</td>
  30.                                   </tr>
  31.                   <tr>
  32.                      <td class="name_com_inp"><input type="text" name="com_name"></td>
  33.                       </tr>
  34.                                   <tr>
  35.                                      <td>Комментарий:</td>
  36.                                   </tr>
  37.                       <tr>
  38.                          <td class="text_com_inp"><textarea size="35" type="text" rows="5" cols="32" name="com_post"></textarea></td>
  39.                       </tr>
  40.                       <tr height="60">
  41.                          <td><input class="button_com" type="submit" value="Оставить комментарий" name="com_submit"></td>
  42.                      </tr>
  43.                  </table>
  44.                </form>  
  45.                          </div>
  46.                    </div>


делал так как вы сказали чето не работает......мб это из-за того что у меня после того как нажата кнопка стоит перезагрузка страницы:

PHP:
скопировать код в буфер обмена
  1. if ($com_name&&$com_post)
  2.                    {                                 
  3.                                       $queryreg = mysql_query("INSERT INTO comments (name, text, date, date_time, post_id) VALUES ('$com_name', '$com_post', '$date_com', '$date_time_com', '$post_id')") or die(mysql_error());
  4.                       ?>    <script> location.replace(window.location); </script><?PHP
  5.                                    }
12. DelphinPRO - 11 Марта, 2012 - 17:20:26 - перейти к сообщению
да, вместо javascript-редиректа поставьте

index.php - это должно быть название вашего файла
13. MBmusic - 11 Марта, 2012 - 17:38:50 - перейти к сообщению
у меня просто такая штука что на индексовом файле происходит вывод всех сообщений, при выборке сообщения у нас по айди выбираются коменты и на этой же странице появляются комменты адресованные данному сообщению, и по этому если ссылатся на какуюто страницу или даже на эту на которой у нас все происходит, то нас будет отправлять на сообщения а не форму коментов, во этому я написал так:



не указывал страницу, ссылается на то что в данный момент активно...) спасибо тебе DelphinPRO за помошь! кстате а зачем писать die();? что оно в данном случае дает??
14. Мелкий - 11 Марта, 2012 - 17:54:28 - перейти к сообщению
MBmusic пишет:
не указывал страницу, ссылается на то что в данный момент активно...)

Возможно, в вашем браузере это и так, но большинство браузеров будут перебрасывать на http://host/#form
(Добавление)
MBmusic пишет:
кстате а зачем писать die();? что оно в данном случае дает??

Прерывает выполнение скрипта. Даёт гарантию того, что дальше скрипт исполняться не будет.
15. MBmusic - 11 Марта, 2012 - 18:18:16 - перейти к сообщению
Мелкий пишет:
MBmusic пишет:
не указывал страницу, ссылается на то что в данный момент активно...)

Возможно, в вашем браузере это и так, но большинство браузеров будут перебрасывать на http://host/#form
(Добавление)
MBmusic пишет:
кстате а зачем писать die();? что оно в данном случае дает??

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


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

 

Powered by ExBB FM 1.0 RC1