ajax [файл 1] -> php [файл 2] -> $ _POST [файл 1] - PullRequest
0 голосов
/ 20 января 2019

Я создаю бюджетное приложение с использованием HTML, Javascript и PHP.Моя цель - дать пользователю возможность добавлять данные в базу данных из предоставленной формы.У меня уже есть тонна php в верхней части моего dashboard.php (который содержит форму), поэтому я не хотел запускать dashboard.php при отправке, поэтому вместо этого я создал кнопку, которая преобразует вызов AJAX вдругой php файл 'addIncome.php'.

У меня есть два разных файла ...

dashboard.php & addincome.php

dashboard.php содержит мою форму, так кака также мой javascript для запуска вызова AJAX.

addincome.php использует $ _POST для получения значений из формы в dashboard.php и создания mysqli_query.Однако сначала ничего не происходило, поэтому я решил вывести значение одного из возвращаемых значений из моего $ _POST.И в итоге я получил эту ошибку ...

undefined index iName in addIncome.php
undefined index iAmount in addIncome.php

Итак, я решил, что, возможно, у меня не было доступа к dashboard.php по умолчанию, поэтому я включил ...

include('dashboard.php');

Все еще без разницы ...

Я действительно стою здесь.Есть мысли?

Спасибо

Форма ...

<form>
    <input type="text" name="iName" placeholder="income name">
    <input type="number" step="0.01" min="0" name="iAmount" placeholder="amount">
    <input type="date" name="iDate">
</form>

JavaScript ...

<script>
    $('.in-btn').click(function() {
        $.ajax({
            url: "addIncome.php",
            type: "POST",
            data: 'show=content',
            success: function(data) {
                $('.in-btn').html(data);    
            }
        });
        setTimeout(() => {
            // location.reload(); 
        }, 2000);
    });
</script>

php ...

<?php

    echo "adding...";

    require_once('connection.php');
    include('dashboard.php');

    $iUser = $_SESSION["username"];
    $iName = $_POST["iName"];
    $iAmount = $_POST["iAmount"];

    echo $iName;

    $sql = "INSERT INTO income (user, name, amount, date) VALUE ('pmanke', '$iName', '$iAmount','1/16/19')";
    mysqli_query($dbCon, $sql);

?>

1 Ответ

0 голосов
/ 20 января 2019

Вы не отправляете никаких почтовых данных с вашим вызовом AJAX, кроме: show=content.Вы хотите отправить данные формы.Вы можете получить данные формы с помощью:

$("#id-of-form").serialize()

Таким образом, ваш PHP-код сможет извлечь правильные значения из ваших данных POST.

Еще более общий способ сделать это -просто создайте нормальную форму с кнопкой отправки и действием и используйте javascript, чтобы перехватить событие отправки, и вместо этого сделайте вызов AJAX:

HTML:

<form id="idForm" action="addIncome.php">
    <input type="text" name="iName" placeholder="income name">
    <input type="number" step="0.01" min="0" name="iAmount" placeholder="amount">
    <input type="date" name="iDate">
    <input type="submit" />
</form>

Javascript:

$("#idForm").submit(function(e) {
    var form = $(this);
    var url = form.attr('action');

    $.ajax({
           type: "POST",
           url: url,
           data: form.serialize(), // serializes the form's elements.
           success: function(data) {
               alert(data); // show response from the php script.
           }
     });

    e.preventDefault(); // avoid to execute the actual submit of the form.
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...