Отправка данных через Ajax из формы

Мне нужно обновить строку в базе данных по идентификатору с помощью Ajax.

Моя форма:

<form id="update_ajax">
<input type="text" name="name" class="test_hide">
<input type="hidden" name="id" value="<?php echo $row['id']; ?>">
<input type="submit" value="<?php echo $row['id']; ?>" class="pure-button">
</form>

Моя функция Ajax:

$("#update_ajax").on("submit", function () {
var id = $(this).attr('id');
var name = $(this).attr('name');
var dataall={'id' : id, 'name' : name};
$.ajax({
type: "post",
url: "update.php",
data: dataall,
success: function (data) {
alert(data);
}
});
});

И мой файл php:

if ((isset($_GET['id'])) && (isset($_GET['name']))) {
$id = $_GET['id'];
$name = $_GET['name'];
}else{
die("Not set");
}
$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "8169x5it");
$query = $pdo->prepare("UPDATE test SET name=:name WHERE id=:id");
$query->bindParam(':name', $name);
$query->bindParam(':id', $id);
$query->execute();

И у меня есть ошибка, что мой name значение не установлено в $_GET['name'], И я не могу понять, почему это не установлено. Потому что я отправляю это в данных.

0

Решение

Это не верно:

var id = $(this).attr('id');
var name = $(this).attr('name');

$(this) это форма, так $(this).attr('id') является "update_ajax", а не значение скрытого ввода. А также $(this).attr('name') не определено, потому что форма не имеет name=something приписывать. То, что вы действительно хотите, это:

var id = $(this).find("input[name=id]").val();
var name = $(this).find("input[name=name]").val();

Но вы можете упростить все это до:

var dataall = $(this).serialize();

serialize() найдет все входные данные в форме и вернет URL-кодированную строку, содержащую все их значения.

Наконец, вы должны либо изменить jQuery, чтобы использовать type: 'GET'или измените PHP для использования $_POST вместо $_GET,

2

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

Что у тебя есть, http://api.jquery.com/attr/

Что вы хотели http://api.jquery.com/val/

Давайте посмотрим, это должно работать, не похоже на другие ошибки в вашем источнике. Если нет, дайте нам знать.

РЕДАКТИРОВАТЬ:

Также вы меняете:

$(this).attr('id');
$(this).attr('name');

к

$("input[name=id]").val();
$("input[name=name]").val();

Или же

$(this).serialize();

Увидеть https://api.jquery.com/serialize/ на потом

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector