2016-04-26 21 views
1

Я пытаюсь сделать мою страницу обновить на submit после того, как она войдет в БД, но это не будет.Cant получить страницу для обновления после отправки

здесь код

PHP страница ...

<?php 
      if ($_SERVER['REQUEST_METHOD'] == 'POST') 
      { 

       //check if its an ajax request, exit if not 
       if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') { 

       } 

       //check $_POST vars are set, exit if any missing 
       if(!isset($_POST["username"]) || !isset($_POST["message"])) 
       { 
        $output = json_encode(array('type'=>'error', 'text' => 'Input fields are empty!')); 
        die($output); 
       } 

       //Sanitize input data using PHP filter_var(). 
       $username  = filter_var(trim($_POST["username"]), FILTER_SANITIZE_STRING); 

       $message  = filter_var(trim($_POST["message"]), FILTER_SANITIZE_STRING); 

       //additional php validation 
       if(strlen($username)<4) // If length is less than 4 it will throw an HTTP error. 
       { 
        $output = json_encode(array('type'=>'error', 'text' => 'Name is too short!')); 
        die($output); 
       } 

       if(strlen($message)<5) //check emtpy message 
       { 
        $output = json_encode(array('type'=>'error', 'text' => 'Too short message!')); 
        die($output); 
       } 

       require('config.php'); 

       $sql="INSERT INTO guestbook(name, comment, datetime) VALUES('$username','$message', now())"; 
       header("Location:thanks.php"); 



      } 
      ?>  

Вот страница JS

$(document).ready(function(){ 
       $("#submit").click(function() { 
        //get input field values 
        var name   = $('#name').val(); 

        var message   = $('#comment').val(); 
        var flag = true; 
        /********validate all our form fields***********/ 
        if(name==""){ 
         $('#name').css('border-color','red'); 
         flag = false; 
        } 

        if(message=="") { 
         $('#comment').css('border-color','red'); 
         flag = false; 
        } 
        /********Validation end here ****/ 
        /* If all are ok then we send ajax request to email_send.php *******/ 
        if(flag) 
        { 
         $.ajax({ 
          type: 'post', 
          url: "thanks.php", 
          dataType: 'json', 
          data: 'username='+name+'&message='+message, 
          beforeSend: function() { 
           $('#submit').attr('disabled', true); 
           $('#submit').after('<span class="wait">&nbsp;<img src="image/loading.gif" alt="" /></span>'); 
          }, 
          complete: function() { 
           $('#submit').attr('disabled', false); 
           $('.wait').remove(); 
          }, 
          success: function(data) 
          { 
           if(data.type == 'error') 
           { 
            output = '<div class="error">'+data.text+'</div>'; 
           }else{ 
            output = '<div class="success">'+data.text+'</div>'; 
            $('input[type=text]').val(''); 
            $('#guestform textarea').val(''); 
           } 

           $("#result").hide().html(output).slideDown();   
           } 
         }); 
        } 
       }); 

       //reset previously set border colors and hide all message on .keyup() 
       $("#guestform input, #guestform textarea").keyup(function() { 
        $("#guestform input, #guestform textarea").css('border-color',''); 
        $("#result").slideUp(); 
       }); 
      }); 

Я положил информацию заголовка в PHP, но каждый раз, когда я ударил представить, он сохраняет данные в БД, а затем просто остается на странице ... Текст в текстовом поле также остается там. Я хочу, чтобы он обновил страницу, чтобы он снова выглядел как пустая форма.

ответ

0

Если вы хотите, чтобы вся страница была обновлена, вы можете использовать reload() в конце вашей функции обратного вызова, выполняющей запрос.

location.reload(); 
+0

где в коде? Не знакомы с JS ... Используется только этот скрипт. – KevinM1990112qwq

+0

@ KevinM1990112qwq попробуйте в конце обратного вызова 'success' после' $ ("# result"). Hide() .html (output) .slideDown(); '. Или лучше в ветке 'else' обратного вызова' success'. –

+0

@ DanCostinel Nope, который не работал. – KevinM1990112qwq

0

Может редактировать файл PHP как,

$sql= mysqli_query($db, "INSERT INTO guestbook(name, comment, datetime) VALUES('$username','$message', now())"); 
// if you using mysqli. 

if($sql){ 
    header("Location:thanks.php"); 
}else{ 
    $output = json_encode(array('type'=>'error', 'text' => 'failed to insert data')); 
    die($output); 
} 

Ваш запрос не был выполнен без mysql_query/mysqli_query или что вы используете.

и ваш AJAX

$.ajax({ 
     type: 'post', 
     url: "thanks.php", 
     dataType: 'json', 
     data: 'username='+name+'&message='+message, 
     beforeSend: function() { 
      $('#submit').attr('disabled', true); 
      $('#submit').after('<span class="wait">&nbsp;<img src="image/loading.gif" alt="" /></span>'); 
     }, 
     complete: function() { 
      $('#submit').attr('disabled', false); 
      $('.wait').remove(); 
     }, 
     success: function(data) 
     { 
      if(data.type == 'error') 
      { 
       output = '<div class="error">'+data.text+'</div>'; 
       $("#result").hide().html(output).slideDown(); 
      } 
      else 
      { 
       output = '<div class="success">'+data.text+'</div>'; 
       $("#result").hide().html(output).slideDown(); 
       $('input[type=text]').val(''); 
       $('#guestform textarea').val(''); 

       // reload 
       location.reload(); 
      }  
     } 
}); 
Смежные вопросы