简体   繁体   English

提交表单后无法使用Ajax停留在同一页面上

[英]Using Ajax to stay on the same page upon submiting form not working

Im trying to create a form that when you submit the form,you stay on the same page and sends the user inputs to Process.php and to my database. 我试图创建一个表单,当您提交表单时,您将停留在同一页面上,并将用户输入发送到Process.php和我的数据库。 The problem that I'm facing is that the page either refreshes or opens up the page Process.php 我面临的问题是页面刷新或打开页面Process.php

My Form 我的表格

<form action="process.php" method="post" class="copy" id="formid" enctype="multipart/form-data">

    Project name: <input type="text" name="name"> <br>


        Video: 
        <input type="text" rows="1" cols="40" name="video">
    <br> 
    Svar 1<input type="text" name="answer1"/> 
    <select name="point1">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
      <option value="6">6</option>
      <option value="7">7</option>
      <option value="8">8</option>
      <option value="9">9</option>
      <option value="10">10</option>
    </select>
    <br>
    Svar 2<input type="text" name="answer2"/> 
    <select name="point2">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
      <option value="6">6</option>
      <option value="7">7</option>
      <option value="8">8</option>
      <option value="9">9</option>
      <option value="10">10</option>
    </select>
    <br>
    Svar 3<input type="text" name="answer3"/> 
    <select name="point3">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
      <option value="6">6</option>
      <option value="7">7</option>
      <option value="8">8</option>
      <option value="9">9</option>
      <option value="10">10</option>
    </select>
    <br>
    Svar 4<input type="text" name="answer4"/> 
    <select name="point4">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
      <option value="6">6</option>
      <option value="7">7</option>
      <option value="8">8</option>
      <option value="9">9</option>
      <option value="10">10</option>
    </select>
    <br>



       <br>
    <input type="submit" name="submit" value="create question" id="submit">
    </form>

Process.php Process.php

<?php
// Exempel 1: Lägga till 

if (isset($_POST['submit'])){

$localhost = "localhost";
$username = "root";
$password = "";

$connect = mysqli_connect($localhost, $username, $password)or 
die("Kunde inte koppla");

mysqli_select_db($connect, 'wildfire');


$name=$_POST['name'];
$video=$_POST['video'];
$answer1=$_POST['answer1'];
$answer2=$_POST['answer2'];
$answer3=$_POST['answer3'];
$answer4=$_POST['answer4'];

$point1=$_POST['point1'];
$point2=$_POST['point2'];
$point3=$_POST['point3'];
$point4=$_POST['point4'];




$sql1= "INSERT INTO question (answer, point) VALUES ('$answer1', '$point1')";

$result=$connect->query($sql1);

$sql2= "INSERT INTO question (answer, point) VALUES ('$answer2', '$point2')";

$result=$connect->query($sql2);

$sql3= "INSERT INTO question (answer, point) VALUES ('$answer3', '$point3')";

$result=$connect->query($sql3);

$sql4= "INSERT INTO question (answer, point) VALUES ('$answer4', '$point4')";

$result=$connect->query($sql4);

print $sql1;
print $sql2;
print $sql3;
print $sql4;

}


?>

Javascript 使用Javascript

$(function () {

        $('form').on('submit', function (e) {

          e.preventDefault();

          $.ajax({
            type: 'post',
            url: 'process.php',
            data: $('form').serialize(),
            success: function () {
              alert('form was submitted');
            }
          });

        });

      });   

Maybe this will fix the issue (copied answer from this other SO question , with credits to @HarveyARamer): 也许这可以解决问题( 此其他SO问题的复制答案,以@HarveyARamer表示感谢):

My best guess is that you are adding your form submit listener before the form is actually rendered. 我最好的猜测是您要在实际呈现表单之前添加form提交侦听器。 Try wrapping your jQuery in $(document).ready(function () {}) ; 尝试将jQuery包装在$(document).ready(function () {})

probably you gave action to your form. 可能是您对表格采取了行动。 If you provide action to your form it will open the page which you specified in your action. 如果您向表单提供操作,它将打开您在操作中指定的页面。 Try remove action attribute of form If you gave 尝试删除表单的动作属性(如果您给了

try prevent default after your ajax success instead of before starting ajax 在ajax成功之后而不是在启动ajax之前尝试防止默认

$(function () {

    $('form').on('submit', function (e) {

      $.ajax({
        type: 'post',
        url: 'process.php',
        data: $('form').serialize(),
        success: function () {
          alert('form was submitted');
          e.preventDefault();
        }
      });

    });

  });   

Html HTML

Use type as button instead of submit 使用类型作为按钮,而不是提交

<input type="button" name="submit" value="create question" id="submit">

Javascript 使用Javascript

On Click function use this below function 单击功能使用以下功能

$('#submit').click(function(e){

     e.preventDefault();

          $.ajax({
            type: 'post',
            url: 'process.php',
            data: $('form').serialize(),
            success: function () {
              alert('form was submitted');
            }
          });

        });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM