Php 使用ajax提交表单数据,无需刷新
我有一个包含多个表单的页面,可以删除MySQL数据库中的行。表单也从MySQL数据库填充 我正在尝试在不刷新页面的情况下对表单进行sumbit,但是这些行不会从我的数据库中删除 更新: 我最初没有提到包含我动态生成的表单的div 表单基于选择列表中的选项。代码:Php 使用ajax提交表单数据,无需刷新,php,jquery,mysql,ajax,forms,Php,Jquery,Mysql,Ajax,Forms,我有一个包含多个表单的页面,可以删除MySQL数据库中的行。表单也从MySQL数据库填充 我正在尝试在不刷新页面的情况下对表单进行sumbit,但是这些行不会从我的数据库中删除 更新: 我最初没有提到包含我动态生成的表单的div 表单基于选择列表中的选项。代码: <form> <h3>Vælg medlem</h3> <select name="users" onchange="showUser(thi
<form>
<h3>Vælg medlem</h3>
<select name="users" onchange="showUser(this.value)">
<?php
$i = 0;
while($row = mysql_fetch_array($result))
{ if (!$i++) echo "<option selected='selected'>Vælg medlem</option>" ?>
<option value="<?php echo $row[medlemmer_id]; ?>"><?php echo $row[medlemmer_navn]; ?></option>
<?php } $i++; ?>
</select>
</form>
用于删除行的php文件:
<?php
mysql_connect("#######", "########", "#######") or die(mysql_error());
mysql_select_db("#######") or die(mysql_error());
mysql_query("DELETE FROM boder_has_medlemmer WHERE relation_id = ". $_POST['relation_id'] ."");
?>
如果我只是使用一个带有method=“POST”
和action=“delete.php
的表单,它就工作了。这意味着相关行被删除,但页面会刷新
对我的错误有什么建议吗?更改这行
data: $("#relation_id").val();,
var rel_id = $("#relation_id").val();
到
或在e.preventDefault()之后;添加此行
data: $("#relation_id").val();,
var rel_id = $("#relation_id").val();
及
放置
在ajax调用函数之后,更改放置参数的方式
$(function () {
$('#myform2').on('submit', function (e) {
e.preventDefault();
var rel_id = $("#relation_id").val();
$.ajax({
type: 'post',
url: 'delete.php',
data: {
relation_id: rel_id
},
success: function () {
alert('form was submitted');
}
});
return false;
});
});
您在控制台中遇到任何错误?如果控制台没有显示任何错误,请查看php错误日志。将错误输出添加到delete.php,看看ajax调用是否真的触发了php。可能是一个简单的路径问题……控制台没有显示任何错误。我如何将错误日志应用于php脚本?似乎没有任何更改事情-但是你让我意识到了一个大括号的错误。没有错误-我不知道如何检查Ajax请求是否真的发出了。对于你来说,记录发生了什么的最简单方法应该是在delete.php mysql\u查询中添加这一行(“插入到某个表名(列名)值('.mysql\u real\u escape\u字符串(print\r($\u POST,true))”);您必须创建一个带有列的表,并在prev代码中替换它们的名称,这应该会将任何post请求保存到您的表中,您可以在js:error(jqXHR,textStatus,errorshorn){console.log(textStatus);}中检查它或添加这个after success函数。您说“在prev代码中替换它们的名称”是什么意思"? 我已经创建了一个表和列,并尝试再次运行它,但没有向tabler添加任何内容<代码>mysql\u查询(“插入错误检查(e1)值('.mysql\u real\u escape\u字符串(print\r($\u POST,true)))”)我猜有一个ajax错误,在js中添加这个after success函数:
error(jqXHR,textStatus,errorhorn){console.log(jqXHR);console.log(textStatus);console.log(errorhorn);}
这将在ajax错误发生时触发,并将错误写入控制台
var rel_id = $("#relation_id").val();
data: {relation_id: rel_id},
return false;
$(function () {
$('#myform2').on('submit', function (e) {
e.preventDefault();
var rel_id = $("#relation_id").val();
$.ajax({
type: 'post',
url: 'delete.php',
data: {
relation_id: rel_id
},
success: function () {
alert('form was submitted');
}
});
return false;
});
});