Отправить форму с помощью ajax

Я пытаюсь передать значения в базу данных с помощью jquery. Я новичок в ajax, но мне нужно сделать это с помощью ajax.

Это то, что я сделал до сих пор, мой php-код

function insertSeries() { $options = array( 'user' => $_POST['user'], 'email' => $_POST['email'], 'summary' => $_POST['summary'], 'due_date' => $_POST['due_date'], 'problem_type' => $_POST['problem_type'], 'status' => $_POST['status'] ); $sql = "insert into ticket_summary('user','email','summary','due_date','problem_type','status') Values (?,?,?,?,?,?)"; $result = mysql_query($sql, $options) or die('Could not insert data'); } 

Мой html-код

  <?php include 'eric_api.php'; ?> <!DOCTYPE html> <html> <head> <title></title> <script src="js/jquery.js"></script> <script src="js/api_calls.js"></script> <link rel="stylesheet" href="css/normalizer.css" /> <link rel="stylesheet" href="css/style.css" /> </head> <body> <div class="wrapper"> <h1>Ticketing System</h1> <div> <div id="ticket_form_wrapper"> <form id="insert_ticket" method="post" action=""> <p> <label for="user">User</label> <br /> <input type="user" id="user" class="post_fields" /> </p> <p> <label for="email">Email</label> <br /> <input type="email" id="email" class="post_fields" /> </p> <p> <label for="summary">Summary</label> <br /> <input type="summary" id="summary" class="post_fields" /> </p> <p> <label for="due_date">Due Date</label> <br /> <input type="due_date" id="due_date" class="post_fields" /> </p> <p> <label for="problem_type">Problem Type</label> <br /> <input type="problem_type" id="problem_type" class="post_fields" /> </p> <p> <label for="status">Status</label> <br /> <input type="status" id="status" class="post_fields" /> </p> <p> <input type="submit" id="submit" value="Submit" /> <input type="button" onclick="window.location='index.php'" value="Go to List"/> <div class="form_result"> </div> </p> </form> </div> </div> </body> </html> 

И вот мой ajax с помощью jquery

 $('#insert_ticket').submit(function(e){ var postData = $(this).serialize(); alert(postData); $.ajax({ type: 'POST', url: 'http://localhost/api/eric_api.php?q=insertseries', data: postData, success: function(response){ $('#insert_ticket').find('.form_result').html(response); }, error: function(){ alert('error'); } }); e.preventDefault(); }); 

Я не знаю, что я делаю неправильно. Любая помощь будет принята с благодарностью

Вместо того, чтобы вмешиваться в событие отправки формы, вместо этого вмешиваться в событие click. Чтобы внести минимальные изменения в существующую настройку, просто добавьте обработчик кликов в кнопку отправки формы. Сначала внутри обработчика вызовите e.preventDefault (). Вам нужно будет явно выбрать форму внутри обработчика для сериализации данных. Затем переместите существующий вызов ajax в этот обработчик, и он должен работать нормально. Кроме того, убедитесь, что вы фактически вызываете insertSeries () где-то в вашем PHP-коде.

ура

Пожалуйста, ответьте на некоторые комментарии, чтобы мы могли выяснить, в чем суть проблемы. Так будет выглядеть ваша функция с правильным синтаксисом mysqli .

  • Как установить соединение: $ mysql = new mysqli (…)

  • Как подготовить оператор: $ stmt = $ mysqi-> prepare (….)

  • Как связать параметры: $ stmt-> bind_param (…)

  • Исполнение: $ stmt-> execute ()

Примечание . Вы делали свою строку вставки так, как будто ее использовали для mysqli но привязка параметра была более pdo на pdo . Я не был уверен, какой из них вы хотите использовать, поэтому я выбрал mysqli . Я лично предпочитаю PDO , хотя … поэтому я могу переписать это, используя это, если хотите. Ссылка на PDO Prepare Function, которая также показывает некоторые привязки.

  // this is your database connection for mysqli $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world'); function insertSeries($mysqli) { $options = array( 'user' => $_POST['user'], 'email' => $_POST['email'], 'summary' => $_POST['summary'], 'due_date' => $_POST['due_date'], 'problem_type' => $_POST['problem_type'], 'status' => $_POST['status'] ); $sql = "insert into ticket_summary('user','email','summary','due_date','problem_type','status') Values (?, ?, ?, ?, ?, ?)"; if ( $stmt = $mysqli->prepare($sql) ) { $stmt->bind_param("ssssss", $options['user'], $options['email'], $options['summary'], $options['due_date'], $options['problem_type'], $options['status']); $success = $stmt->execute(); if ($success) { print "query worked"; } else { print "query failed"; } } }