Как хранить данные в базе данных из AJAX? - PullRequest
0 голосов
/ 17 октября 2019

Ниже показан мой кусок кода.

$.ajax({
 type:'POST',
 dataType: JSON,
 url: 'http://localhost/UPLOAD-THIS/public/api/place-order',
 data: {"order":[{"id":2,"restaurant_id":2,"item_category_id":1,"name":"Burger","price":"10.00","image":"/assets/img/items/1570619770Fblsy6snNM.png","is_recommended":1,"is_popular":1,"is_new":1,"desc":null,"placeholder_image":"/assets/img/items/small/1570619770Fblsy6snNM-sm.png","is_active":1,"addon_categories":[],"quantity":1},
       {"id":3,"restaurant_id":2,"item_category_id":1,"name":"Pizza","price":"20.00","image":"/assets/img/items/1570619787yieN7hwXCQ.jpg","is_recommended":1,"is_popular":1,"is_new":1,"desc":null,"placeholder_image":"/assets/img/items/small/1570619787yieN7hwXCQ-sm.jpg","is_active":1,"addon_categories":[],"quantity":1}],
           "coupon":[],"location":"Campus","order_comment":null,"total":{"productQuantity":2,"totalPrice":30},"method":"Wallet","payment_token":""},
 success: function(e) {
   alert(success);
 },
 error: function(e) {
  alert(JSON.stringify(e));
 }
});

Приведенные выше данные являются фиктивными. Я хочу знать, как вы можете передавать данные таким образом, чтобы они сохранялись в базе данных.

Например, «id» следует выбирать из формы, которая заполняется и хранится в базе данных.

1 Ответ

0 голосов
/ 17 октября 2019

Как отправить данные в наш бэкэнд, который хранит их в базе данных:

Вам потребуется:

  1. Извлечь данные из интерфейса, используя JavaScript
  2. Включите его в запрос POST.
  3. Перехватите и обработайте запрос в PHP, чтобы сохранить его в базе данных.

Пример:

Это пример файла PHP (без полного обновления страницы), но вам может потребоваться изменить части YOUR_DATA_HERE, DATABASE_NAME_HERE, а также root (это имя пользователя в PhpMyAdmin).

<?php
if (isset($_POST['submit'])) {
  // Escape possible HTML tags:
  $content = htmlspecialchars($_POST['myContent'], ENT_QUOTES | ENT_SUBSTITUTE);

  // Database connection.
  // (Allows data to take 64 KB using "65536" constant)
  $db = new PDO('mysql:dbname=DATABASE_NAME_HERE', 'root', '');
  $db->query('CREATE TABLE IF NOT EXISTS `my_table` (id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, text VARCHAR(65536))');

  // Storing new record.
  $query = $db->prepare('INSERT INTO my_table VALUES (NULL, :text)');
  $query->bindValue(':text', $content);
  if ($query->execute()) {
    $response = 'Successfully stored: ' . $content;
  }
  else {
    $response = 'Error: ' . join(' ', $query->errorInfo());
  }

  exit($response);
}
?>

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
  $(document).ready(function(){
    $('form#my_form_id').submit(function(e) {
      e.preventDefault();

      var myContent = "YOUR_DATA_HERE";
      var url = '#';
      $.post(url, {'submit': true, 'myContent': myContent}, function(response) {
        alert(response);
      });
    });
  });
</script>
</head>
<body>

<div id="center" style="text-align: center; margin-top: 150px;">

    <form id="my_form_id">
        <input type="submit" name="Send">
    </form>
</div>

</body>
</html>

Примечания:

  1. Метод $.post(...) является сокращением для $.ajax({type:'POST', ...}) (оба являются AJAX).
  2. Если вы хотите сохранить ваши данные без каких-либо изменений, тогда отмените использование метода htmlspecialchars(...) (например, $content = $_POST['myContent'];).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...