这是我的表单,我想从中更新值。当我尝试使用简单的PHP + HTML时,它的工作完美!但是,当我尝试通过ajax调用发布值时,它不起作用。请提出任何建议。
HTML
<form class="form-block" role="form" action="" method="post">
<div class="form-group">
<?php
$email=$_SESSION["login_email"];
$query=mysqli_query($con,"select * from customers where email='$email'");
while($row=mysqli_fetch_array($query,MYSQLI_ASSOC))
{
?>
<label for="name">Full Name</label>
<input type="text" name="name" class="form-control" id="name" value="<?= $row["name"]; ?>" placeholder="Full Name">
<label for="comment">Address</label>
<textarea class="form-control" name="address" id="address" rows="5" id="comment" ></textarea>
<label for="telephone">Telephone</label>
<input type="tel" class="form-control" name="phone" id="phone" placeholder="Enter Mobile Number" value="" >
<label for="city">City</label>
<input type="text" class="form-control" name="city" id="city" placeholder="Enter City" value="<?= $row["city"]; ?>" >
</div>
<?php
}?>
<input type="submit" class="btn btn-default" name="add" id="add" value="Update"/>
<span class='msg'></span>
<div id="error"></div>
</form>
AJAX
$(document).ready(function() {
$('#add').click(function()
{
$.ajax({
url: "address_update.php",
type: "POST",
async: true,
data: { Name:$("#name").val(),Address:$("#address").val(), Phone:$("#phone").val(), City:$("#city").val()}, //your form data to post goes here as a json object
dataType: "html",
success: function(data) {
if(data)
{
//$('#output').html(data);
$("body").load("index.php?page=form");//.hide();//.fadeIn(1500).delay(6000);
}
else
{
$("#error").html("<span style='color:#cc0000'>Error:</span> Invalid username and password. ");
}}});
});});
PHP
<?php
include ("db/db.php");
session_start();
$name=$_POST['Name'];
$address=$_POST['Address'];
$phone=$_POST['Phone'];
$city=$_POST['City'];
$email=$_SESSION['login_email'];
$sql=mysqli_query($con,"Update customers set name='$name',address='$address',phone='$phone',city='$city' where email='$email'");
if($sql)
{
echo "updated";
}
答案 0 :(得分:3)
这个选择器:
$('#add')
找不到任何东西。因为标记中没有id="add"
的HTML元素。
你做有一个name="add"
的元素。因此,要么向该元素添加id
:
<input id="add" type="submit" class="btn btn-default" name="add" value="Update"/>
或更改您的选择器以定位现有元素:
$('input[name="add"]')
注意:$('#address')
和$('#phone')
也是如此。标记中不存在此类元素。看看the jQuery documentation for selectors。
答案 1 :(得分:0)
删除
下提到的IF循环if(isset($_SESSION["login_email"]))
答案 2 :(得分:0)
此外,您需要将按钮类型从提交更改为按钮
<input type="submit" class="btn btn-default" name="add" value="Update"/>
上面发送表单,无论你添加到click事件中的是什么都是在parralel中完成的。
<input type="button" class="btn btn-default" name="add" value="Update"/>
仅在使用时执行您的JavaScript:
$('input [name="add"]').click(function(){
// your improved ajax call here
}
答案 3 :(得分:0)
试试这个:
$.ajax({
.
.
data: {
'Name': $name,
'address': $address,
.
.
}
});