javascript — обновление данных с загрузкой Ajax не работает

У меня есть страница администратора, которая может вставлять, обновлять и удалять данные. Я хочу отобразить простой загрузочный GIF при выполнении любой из этих операций. Все 3 операции работают отлично, но когда я пытаюсь создать Ajax, он перестает работать.

Ниже мой код Ajax. Этот код просто показывает div который имеет загрузочный GIF внутри него, сразу после отправки формы, и если он успешно выполнен, скрывает его снова. Это просто.

$("#form").submit(function(e) {
e.preventDefault();

$("#loading").show();

$.ajax({
url: "Operations.php",
dataType: "HTML",
success: function() {
$("#loading").hide();
}
});
});

Теперь Operations.php, который выполняется каждой формой, содержит 3 операции базы данных. Он хранит имя класса, отправленного hidden поле, получает значение из button представленной формы и в зависимости от ее стоимости она создает ServiceDatabase прохождение класса и выполнение одного действия.

$class = filter_input(INPUT_POST, "class");
$id = filter_input(INPUT_POST, "id");

@require_once "../../php/Connection.php";
@require_once "../../php/ServiceDatabase.php";
@require_once "../../php/" . $class . ".php";

$Operation = new ServiceDatabase($connection, new $class);

switch ($_REQUEST["submit"]) {
case "insert":
$Operation->setPostVariables();
$Operation->insert();
break;
case "update":
$Operation->setPostVariables();
$Operation->update($id);
break;
case "delete":
$Operation->delete($id);
break;
}

И, наконец, просто форма.

<form id="form" class="center-block" action="Operations.php" method="post">
<h3>Alterar - <small><?php echo $class ?></small></h3>

<input type="hidden" value="<?php echo $class ?>" name="class"/>
<input type="hidden" value="<?php echo $id ?>" name="id"/>

<?php echo $Table->generateAdminTables($id); ?>

<button type="submit" name="submit" value="update" class="btn btn-success btn-update">Atualizar</button>
</form>

Что происходит, так это то, что операция базы данных, в данном случае обновление, не работает, например, если она не достигает Operations.php файл.

0

Решение

Вам нужно установить POST Данные, которые вы получаете из формы.

$.ajax({
url: "Operations.php",
method: "POST", // defaults to get
data: $(this).serialize(), // get the form data and send it
dataType: "HTML",
success: function() {
$("#loading").hide();
}
});
0

Другие решения

Похоже на то $_REQUEST не работает с Ajax. Какой сюрприз.

Мое решение: я создал новый hidden в формах для получения через JQuery value из нажатых button:

btnValue = "";
$("#form button").click(function() {
btnValue = $(this).attr("value");
});

Тогда прямо перед $.ajaxЯ установил hidden значение:

$(this).find("#action").attr("value", btnValue);

В моем Operations.phpновый $_POST значение получено

$action = filter_input(INPUT_POST, "action");

И в switch блок, я просто проверяю $action

switch ($action) {
case "insert": ...
case "update": ...
case "delete": ...
}

Работал отлично.

0

Попробуй это. Я не проверял, но это будет работать.

$("#form").submit(function (e) {
e.preventDefault();

$("#loading").show();

$.ajax({
url: "Operations.php",
dataType: "HTML",
success: function () {
$("#loading").hide();
},
error: function (data) {
},
complete: function (data) {
$("#loading").hide();
//A function to be called when the request finishes
// (after success and error callbacks are executed).
}
});
});
0
По вопросам рекламы [email protected]