возникли проблемы с формой, пытающейся использовать jquery для ajax только поле $ the_message, чтобы избежать обновления браузера

#php #javascript #jquery

#php #javascript #jquery

Вопрос:

Я хочу избежать обновления браузера и получить возможность отображать только сообщение без обновления браузера.

     $idc = $_GET['id'];
    $name1 = $_GET['name'];
    $id2 = $_GET['ids'];
     if ($_POST['message_field'] != ""){
        $message_field = $_POST['message_field'];

          $sql = mysql_query("INSERT INTO comment (mem_id,commented_men_id, message, message_date) 
         VALUES('$userid','$idc','$message_field', now())")  
         or die (mysql_error());

    }

        $sql_message = mysql_query("SELECT id, mem_id ,message, message_date FROM comment WHERE mem_id='$userid'  ORDER BY message_date DESC");

        while($row = mysql_fetch_array($sql_message)){


            $id = $row["id"];
            $me_id = $row["mem_id"];
            $json = $row["message"];
                 $message_date = $row["message_date"];
                $message = json_encode($json);

 $sql_mem_data = mysql_query("SELECT id, name FROM users WHERE  id='$me_id'");
              while($row2 = mysql_fetch_array($sql_mem_data)){
                $id = $row2["id"];
                $ufirstname = $row2["name"];
        }

    $messageList .= '<div id="only"><p>' . ufirstname . '</p><br/><p    id="pmessage">'.$the_message.'</p></div>';

    }

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title> Book</title>
    <link rel="stylesheet" href="style/style.css" type="text/css" media="screen" />
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="jquery.form.js"></script>
    <script type="text/javascript" src="mootools-core-1.3.2-full-compat.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){

       $("#messageinput").click(function() {
           $.post($('#message').attr("action"),
                  $("#message").serialize(),
                  function(html) {
                    var comment = $(html) .find('#messageoutput').html();
                      $("#pmessage").html(comment);
              });
   });
       });

    </script>
         <div id="messageid">
             <form align="left" id="message" action="<?php profile.php?id='.$idc.'amp; ids='.    $id2.'amp;name='.$name1.'?>" method="post" enctype="multipart/form-data" name="blab_from">
        <textarea name="message_field" rows="3" style="width:97%;"></textarea>
         <input id="messageinput" name="submit" type="button" value="submit" align="left" />
        </form>
        </div>
        <div id="messageoutput"><?php print "$messageList"; ?></div>
  

Структура таблицы

 CREATE TABLE IF NOT EXISTS `blabbing` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `mem_id` int(11) NOT NULL,
  `commented_men_id` int(11) NOT NULL,
  `the_message` varchar(255) NOT NULL,
  `sub_commented_id` int(11) NOT NULL,
  `message_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `type` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=146 ;
  

Комментарии:

1. я хочу избежать обновления браузера прямо сейчас, комментарий отправлен, но затем он будет повторять весь сайт внутри идентификатора #pmessage вместо отображения только сообщения

Ответ №1:

Вам нужно запретить действие отправки по умолчанию, чтобы сделать это, которое вы можете использовать preventDefault .

 <script type="text/javascript">
$(document).ready(function(){

   $("#messageinput").click(function(e) {
      e.preventDefault();
       $.post($('#message').attr("action"),
              $("#message").serialize(),
              function(html) {
                  $("#pmessage").html(html);
              }
       );
   });
</script>
  

Также, пожалуйста, завершите тег script

Комментарии:

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

2. он печатает все, что находится внутри html-тегов внутри #pmessage, как повторение всего этого. когда мне нужно, чтобы messsage отображал только не весь сайт в этом теге идентификатора, называемом #pmessage. что может происходить?

3. Это происходит потому, что вы используете тот же файл в качестве цели post. Итак, что вы можете использовать другой файл для сохранения информации в db и который будет печатать только сообщение об успешном завершении. Например, создайте другой файл с именем save_profile.php , который будет содержать часть сохранения базы данных, и используйте его в действии формы.

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

5. TaPoS Мне нужно будет вставить и ВЫБРАТЬ в этом новом файле?