2014-09-14 7 views
0

У меня есть index.htmlОтправить форму обновить страницу

<!DOCTYPE html> 
<html lang="it"> 
<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>League of Legends Straw Poll</title> 
    <link rel="stylesheet" type="text/css" href="css/bootstrap.css"> 
    <link rel="stylesheet" type="text/css" href="css/styles.css" /> 
</head> 
<body> 
    <div class="container"> 
     <div class="row"> 
      <div class="col-md-8 col-md-offset-2"> 
       <h1 class="text-center">Game Straw Poll</h1> 
      </div> 
     </div> 
     <br> 
     <div class="row"> 
      <div class="col-md-6 col-md-offset-3"> 
       <div class="panel panel-default"> 
        <div class="panel-body"> 
         <!-- FORM --> 
         <form name="submitForm" id="submitForm" action="process.php" method="post"> 
          <div class="row"> 
           <div class="col-md-12"> 
            <!-- GAME --> 
            <select class="form-control" id="game-group" name="game" onchange="ChangeBackground();"> 
             <option selected disabled>Select your Game...</option> 
             <option value="League_of_Legends">League of Legends</option> 
             <option value="Heartstone">Hearthstone</option> 
            </select> 
           </div> 
          </div> 
          <br> 
          <div class="row"> 
           <div class="col-md-12"> 
            <!-- QUESTION --> 
            <div class="input-group" id="question-group"> 
             <input type="text" class="form-control" name="question" id="question" placeholder="Start typing your question..."> 
             <span class="input-group-addon"> 
              <i class="glyphicon glyphicon-question-sign"></i> 
             </span> 
            </div> 
           </div> 
          </div> 
          <br> 
          <div class="row"> 
           <!-- OPTIONS --> 
           <div class="form-group form-group-options col-md-12 col-sm-12 col-xs-12"> 
            <div class="input-group input-group-option col-md-12 col-sm-12 col-xs-12" id="options-group"> 
             <input type="text" name="option[]" id="option" class="form-control" placeholder="Options..."> 
             <span class="input-group-addon input-group-addon-remove"> 
              <span class="glyphicon glyphicon-remove"></span> 
             </span> 
            </div> 
           </div> 
          </div> 
          <div class="row"> 
           <div class="col-md-12"> 
            <!-- CHOICE --> 
            <div class="checkbox" id="choice-group"> 
             <label> 
              <input type="checkbox" id="choice" name="choice" value="Yes">Allow multiple choice 
             </label> 
            </div> 
           </div> 
          </div> 
          <div class="row"> 
           <div class="col-md-12"> 
            <button type="submit" class="btn btn-primary btn-lg pull-left" name="submit_button" id="submit_button" data-toggle="modal" data-target="#myModal">Create Poll</button> 
           </div> 
          </div> 
         </form> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 

    <div id="myModal" class="modal fade"> 
     <div class="modal-dialog"> 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal">&times;</button> 
        <h4 class="modal-title">Poll created</h4> 
       </div> 
       <div class="modal-body"> 
        <p>Share it: <a href="http://gamepoll.net/<?php echo $rand_value; ?>">http://gamepoll.net/<?php echo $rand_value; ?></a></p> 
       </div> 
       <div class="modal-footer"> 
        <button type="button" class="btn btn-default" data-dismiss="modal">Chiudi</button> 
        <button type="button" class="btn btn-primary">Invia</button> 
       </div> 
      </div> 
     </div> 
    </div> 

    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
    <script type="text/javascript" src="js/bootstrap.js"></script> 
    <script type='text/javascript' src='js/addfield.js'></script> 
    <script type='text/javascript' src='js/changebackground.js'></script> 
    <script type='text/javascript' src='magic.js'></script> 
</body> 
</html> 

Функция AJAX в JS скрипт

// magic.js 
$(document).ready(function() { 

// process the form 
$('form').submit(function(event) { 

    $('.form-group').removeClass('has-error'); // remove the error class 
    $('.help-block').remove(); // remove the error text 

    // get the form data 
    // there are many ways to get this data using jQuery (you can use the class or id also) 
    var formData = { 
     'game'    : $('input[name=game]').val(), 
     'question'   : $('input[name=question]').val(), 
     'option'   : $('input[name=option[]]').val(), 
     'choice'   : $('input[name=choice]').val() 
    }; 

    // process the form 
    $.ajax({ 
     type  : 'POST', // define the type of HTTP verb we want to use (POST for our form) 
     url   : 'process.php', // the url where we want to POST 
     data  : formData, // our data object 
     dataType : 'json', // what type of data do we expect back from the server 
     encode  : true 
    }) 
     // using the done promise callback 
     .done(function(data) { 

      // log data to the console so we can see 
      console.log(data); 

      // here we will handle errors and validation messages 
      if (! data.success) { 

       // handle errors for game --------------- 
       if (data.errors.game) { 
        $('#game-group').addClass('has-error'); // add the error class to show red input 
        $('#game-group').append('<div class="help-block">' + data.errors.game + '</div>'); // add the actual error message under our input 
       } 

       // handle errors for question --------------- 
       if (data.errors.question) { 
        $('#question-group').addClass('has-error'); // add the error class to show red input 
        $('#question-group').append('<div class="help-block">' + data.errors.question + '</div>'); // add the actual error message under our input 
       } 

       // handle errors for option --------------- 
       if (data.errors.option) { 
        $('#option-group').addClass('has-error'); // add the error class to show red input 
        $('#option-group').append('<div class="help-block">' + data.errors.option + '</div>'); // add the actual error message under our input 
       } 

       // handle errors for choice --------------- 
       if (data.errors.choice) { 
        $('#choice-group').addClass('has-error'); // add the error class to show red input 
        $('#choice-group').append('<div class="help-block">' + data.errors.choice + '</div>'); // add the actual error message under our input 
       } 


      } else { 

       // ALL GOOD! just show the success message! 
       $('form').append('<div class="alert alert-success">' + data.message + '</div>'); 

       // usually after form submission, you'll want to redirect 
       // window.location = '/thank-you'; // redirect a user to another page 

      } 
     }) 

     // using the fail promise callback 
     .fail(function(data) { 

      // show any errors 
      // best to remove for production 
      console.log(data); 
     }); 

    // stop the form from submitting the normal way and refreshing the page 
    event.preventDefault(); 
}); 

}); 

И в process.php

<?php 
//Include configuration file 
include('includes/config.php'); 

//Define variables 
$question=$_POST['question']; 
$game=$_POST['game']; 
$option=$_POST['option']; 
$choice=$_POST['choice']; 

//Generate random number 
$rand_value=rand(); 

//Create temporary folder 
mkdir($rand_value); 

//Copy page of Ask Poll 
copy('page.php', $rand_value . '/page.php'); 
rename($rand_value . '/page.php', $rand_value . '/index.php'); 

//Add data into database 
mysql_connect($db_host, $db_username, $db_password) or die ("Errore di connessione!"); 
mysql_select_db($db_name) or die ("Impossibile selezionare database!"); 
$sql1="CREATE TABLE `" . $rand_value . "` (Question VARCHAR(200), Options VARCHAR(200), Choice INT(11))"; 
mysql_query($sql1) or die ("Impossibile eseguire la query!"); 

//Count number of Options available 
$count=count($option); 

    for ($i=0; $i<($count-1); $i++) 
    { 
     ${$sql . $i}="INSERT INTO `" . $rand_value . "` (Question, Options, Choice) VALUES ('$question', '$option[$i]', '$choice')"; 
     mysql_query(${$sql . $i}); 
    } 
?> 

Но когда я отправьте форму, страница перенаправит меня на process.php

Я не хочу, чтобы сайт обновить страницу

EDIT

Вернер, я последовал за ваше предложение, добавив preventDefault, но он не работает :(

+0

Попробуйте написать 'return false' в нижней части функции отправки. –

+0

Проверьте мой ответ на этот похожий вопрос: http://stackoverflow.com/questions/21917084/jquery-form-post-php-empty-my-serialize-seems-to-be-failing/21917306#21917306 – Werner

ответ

1

У вас есть синтаксические ошибки в вашей магии. js-файл. Вы должны начать с включения консоли и посмотреть ее на наличие ошибок.

Это то, что я мог прочитать при нажатии кнопки отправки, а затем Escape сразу после этого, чтобы остановить отправку.

Проблема заключается в том, где вы создаете свою форму. (Что вы можете на самом деле создать намного проще с помощью http://api.jquery.com/serialize/)

У вас есть опечатка на линии 15. Обратите внимание на дополнительные скобки? Вы не должны добавлять скобки, даже если они находятся в имени поля. Я рекомендую вам использовать решение Serialize или, по крайней мере, выбирать поля, используя их идентификаторы (для чего они в основном предназначены).

$('input[name=option[]]') // Not valid 
$('#option') // Better way to select a field 

Надеюсь, что это поможет вам в правильном направлении.

Смежные вопросы