javascript — путаница при передаче значения AJAX

Я искал способ отправки данных с помощью кнопки, чтобы данные были сохранены или обновлены в базе данных без перезагрузки. Сейчас работает обновление и вставка данных. Но я использовал dataString переменная javaScript. Я думал через это dataString переменные почтовые данные передаются. Но когда я удалил эту переменную из моего кода, вставка или обновление данных все еще работали. Так как передача данных здесь работает.

Как метод post получает данные от моего вызова ajax здесь.

<html>
<title>Registration</title>

<body>
<?php
$servername = "localhost";
$username = "root";
$password = "nopass";
$dbname = "registration_project";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
<div style="width:350px">
<div style="float:left;width:40%">
Id:<br/><br/>
First Name:<br/><br/>
Last Name:<br/><br/>
Age:<br/><br/>
</div>
<div style="float:left;width:60%">
<form action="" method="post">
<input type="number" id="id_id" name="id" value=<?php
if (isset($_POST['id']))
echo $_POST['id'];
?>><br /><br />
<input type="text" id="id_fname" name="fname" value=<?php
if (isset($_POST['fname']))
echo $_POST['fname'];
?>><br /><br />
<input type="text" id="id_lname" name="lname" value=<?php
if (isset($_POST['lname']))
echo $_POST['lname'];
?>><br /><br />
<input type="number" id="id_age" name="age" value=<?php
if (isset($_POST['age']))
echo $_POST['age'];
?>><br /><br />
<input type="submit" id="id_submit" name="submit">
</form>
</div>
</div>
<script src="js/jquery-1.11.3.js"></script>
</body>
</html>
<?php
if (isset($_POST['id']))
echo $_POST['id'] . "<br/><br/>";
if (isset($_POST['fname']))
echo $_POST['fname'] . "<br/><br/>";
if (isset($_POST['lname']))
echo $_POST['lname'] . "<br/><br/>";
if (isset($_POST['age']))
echo $_POST['age'] . "<br/><br/>";
?>

<?php
if (isset($_POST['submit'])) {
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$age = $_POST['age'];
$sql = "select max(id) from registration";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while ($row = $result->fetch_assoc()) {
$id = $row["max(id)"];
}
} else {
echo "0 results";
}

if ($id==$_POST['id']) {
$id = $_POST['id'];
$sql = "update registration set firstName='$fname', lastName='$lname',             age=$age where id=$id";
mysqli_query($conn, $sql);
} else {
$id=$_POST['id'];
$sql = "Insert into registration(id,firstName,lastName,age) values($id,'$fname','$lname',$age)";
mysqli_query($conn, $sql);
}
}
mysqli_close($conn);
?>
<script>
$("#id_submit").click(function(e) {
var id = $("#id_id").val();
var fname = $("#id_fname").val();
var lname = $("#id_lname").val();
var age = $("#id_age").val();
var dataString = "id="+id+ '&fname='+fname+'&lname='+lname+'&age='+age;
//console.log(dataString);
$.ajax({
type:'POST',
data:dataString,
url:'Registration.php',
success:function(data) {

}
});
});
</script>

2

Решение

Ваш обработчик кликов не имеет e.preventDefault() в этом. Поэтому после отправки вызова AJAX форма также отправляется в обычном режиме. Так что даже если вы не заполните dataString, база данных будет обновлена ​​из формы.

Чтобы использовать только AJAX, вы должны позвонить e.preventDefault(), Вам также необходимо указать значение для submit параметр, потому что код PHP использует if(isset($_POST['submit'])) знать, должен ли он обрабатывать параметры формы.

$("#id_submit").click(function(e) {
e.preventDefault();
var id = $("#id_id").val();
var fname = $("#id_fname").val();
var lname = $("#id_lname").val();
var age = $("#id_age").val();
var dataString = "submit=submit&id="+id+ '&fname='+fname+'&lname='+lname+'&age='+age;
//console.log(dataString);
$.ajax({
type:'POST',
data:dataString,
url:'Registration.php',
success:function(data) {

}
});
});
2

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

В вашем случае значения не передаются. Более того, как вы пытаетесь сделать (? Id = …&fname = … и т. д.) для передачи его с помощью $ _GET.

Вы должны сделать что-то похожее на:

$.ajax({
type:'POST',
data: { id : $("#id_id").val(),
fname : $("#id_fname").val(),
lname : $("#id_lname").val(),
age : $("#id_age").val()
},
url:'Registration.php',
success:function(data) {
// code
}
});
1

But when I removed that variable from my code data insert or update was still working. So how the passing of data working here.

Ответ

Когда вы удаляете var dataString все поля, имеющие name атрибуты автоматически отправляются вместе с формой

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