2015-12-13 3 views
0

Я пытаюсь понять jquery и особенно вставлять и отображать данные в таблице mysql с помощью ajax.Отображение успешного сообщения после отправки формы

Я экспериментировал с этим кодом, который вставляет и отображает записи из базы данных mysql. Теперь я пытаюсь заставить его отображать сообщение об успешном завершении в div с идентификатором «info», одновременно отображая все записи. Кажется, я делаю только один, но не тот и другой. Большое спасибо.

form.php

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> 
    </script> 
    <script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> 

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

       function showComment(){ 
        $.ajax({ 
        type:"post", 
        url:"process_ajax.php", 
        data:"action=showcomment", 
        success:function(data){ 
         $("#comment").html(data); 

        } 
        }); 
       } 
       showComment(); 

       $("#button").click(function(){ 

         var username=$("#username").val(); 
         var review=$("#review").val(); 

         $.ajax({ 
          type:"post", 
       url:"process_ajax.php", 
           data:"username="+username+"&review="+review+"&action=addcomment", 
        success:function(data){ 
         $("#info").html(data); 
         } 

         }); 

       }); 
      }); 
    </script> 
    </head> 

    <body> 
    <form> 
    Username : <input type="text" name="username" id="username"/> 
      </br> 
      Review : <input type="text" name="review" id="review" /> 
      </br> 
      <input type="button" value="Send Comment" id="button"> 
      </form> 
     <div id="info" /> 
      <ul id="comment"></ul> 

    </body> 
    </html> 

Process_ajax.php

<?php 
include_once("db_conx.php"); 

$action=$_POST["action"]; 
    if($action=="showcomment"){ 
    $show="Select * from user_reviews ORDER by date desc"; 
    $result = $db_conx->query($show); 
while($row=mysqli_fetch_array($result)){ 
    echo "<li><b>$row[username]</b> : $row[review]</li>"; 
    } 
    } 
    else if($action=="addcomment"){ 
$username= ($_POST['username']); 
$review= ($_POST['review']); 

    $stmt = $db_conx->prepare('INSERT user_reviews SET username = ?, review=?'); 
$stmt->bind_param('ss', $username, $review); 
$stmt->execute(); 
if ($stmt->errno) { 
echo "There was an error in saving your review. Please try again." .   $stmt->error; 
    }else{ 
    echo "Your review has been saved"; 
} 
} 
?> 
+0

как только вы получите, что вещь происходит, вы получите ошибка здесь '' INSERT user_reviews SET username =?, review =? '', и если у вас более одной строки, хорошо ... вы увидите, что происходит. Вы не будете счастливы, если вы хотите использовать UPDATE, а не INSERT. –

+0

У меня все получилось ... он работает, но спасибо. Я попробую ОБНОВЛЕНИЕ. – JulianJ

ответ

0

сохранить запись данных как массив и сообщение как обычный вар и создать json:

$list = ''; 
while($row=mysqli_fetch_array($result)){ 
    $list .= "\n<li><b>$row[username]</b> : $row[review]</li>"; 
} 

if ($stmt->errno) { 
    $msg = "There was an error in saving your review. Please try again." .    $stmt->error; 
}else{ 
    $msg = "Your review has been saved"; 
} 

echo json_encode(["list"=>$list, "msg"=>$msg]); 

Не забудьте положить в DATATYPE в Ajax:

type:"post", 
dataType: "json" 

Затем в функции успеха, вы можете получить доступ к ВАРУ: data.list и data.msg