Php jqueryajax插入和编辑
在下面的函数中,我有两个post请求。一个用于在数据库中插入值(submit.php),另一个用于根据businessid(edit.php)编辑数据库中的现有值。但是,脚本只执行第一部分。也就是说,当选择“keuze”并单击submit时,脚本会很好地插入到数据库中。但是,当选择“keuze”以外的内容并单击submit时,脚本不会编辑数据库中的记录。我能做些什么来解决这个问题Php jqueryajax插入和编辑,php,jquery,mysql,dropdown,Php,Jquery,Mysql,Dropdown,在下面的函数中,我有两个post请求。一个用于在数据库中插入值(submit.php),另一个用于根据businessid(edit.php)编辑数据库中的现有值。但是,脚本只执行第一部分。也就是说,当选择“keuze”并单击submit时,脚本会很好地插入到数据库中。但是,当选择“keuze”以外的内容并单击submit时,脚本不会编辑数据库中的记录。我能做些什么来解决这个问题 submitformfunction: function(){ $(document).on('sub
submitformfunction: function(){
$(document).on('submit', '#form', function(){
var data = $(this).serialize();
var target = $('#busselect option:selected').val();
var businessid = $('#busselect').children(":selected").attr("id");
if(target == 'keuze'){
$.ajax({
type : 'POST',
url : 'submit.php',
data : data,
success : function(data)
{
alert('Company added');
},
error: function( jqXhr, textStatus, errorThrown ){
console.log( errorThrown );
}
});
}
else
{
$.ajax({
type : 'POST',
url : 'edit.php',
data : businessid+data,
success : function(data)
{
alert('Company modified');
},
error: function( jqXhr, textStatus, errorThrown ){
console.log( errorThrown );
}
});
}
});
},
submit.php:
<?php
$mysqli = new mysqli("localhost", "root", "", "brandveiligheid");
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
if($_POST )
{
$naam = addslashes(htmlentities($_POST['uitgevoerd_door_naam']));
$mysqli->query("INSERT INTO form (uitgevoerd_door_naam)
VALUES ('$naam')");
}
mysqli_close($mysqli);
?>
查询中似乎存在问题,因为“$\u POST[business\u id]”将假定为varchar,而数据库中id的数据类型必须为int。试试下面
"UPDATE form SET uitgevoerd_door_naam='$naam' WHERE id=addslashes(htmlentities($_POST[business_id]))"
还要始终确保查询的安全;) 做几步,让我知道你得到了什么,
1.在edit.php中
if($_POST )
{
$naam = addslashes(htmlentities($_POST['uitgevoerd_door_naam']));
echo $query = "UPDATE form SET uitgevoerd_door_naam='$naam' WHERE id='$_POST[business_id]'";
$mysqli->query($query);
}
在js中:
其他的
{
让我知道你在警报中得到了什么。你说过“不更新”。edit.php
文件会触发吗?你使用过浏览器的开发者“网络”吗选项卡进行故障排除?AJAX调用是否失效?您很容易受到攻击,并且您的编辑AJAX调用失败,因为您传入的test+businessid
test
似乎不存在于您的代码中,并且会生成一个PHP无法识别为key=value
表单提交的数字/字符串,将$\u POST留白。仅供参考,很好作业格式化你的代码-它看起来不错!你可以考虑三件事:双线提要只创建开放空间,所以删除双行提要-使你的代码> IF-({)/<代码>格式一致-在某些地方,它在同一行上,在某些地方<<代码> >{
本身就在一行上-最后,不要在PHP文件末尾使用?>
。现在认为最好的做法是省略PHP文件末尾的内容。请确认,您是否尝试了警报(目标)
在if循环之前?当您选择除“keuze”之外的其他选项时会发生什么?亲爱的Shrikant,是的,我尝试了,它会产生正确的值。此外,@cale_b tnx用于提到的网络选项卡。ajax调用确实转到edit.php.Thx,用于注释addslashes和htmlentities:)。但是,我尝试了您的解决方案,仍然无法编辑.add斜杠(HtmlEntes(…)对此进行转义是完全不合适的。您应该使用准备好的语句,但更快的修复方法是:“更新表单集UITGEVORD\u door\u naam='$naam'其中id='”。$mysqli->real\u escape\u string($\u POST['business\u id'])。“”
或者,如果id
是一个int列,请使用intval
而不是$mysqli->real\u escape\u string
。这可能是一个非常愚蠢的问题,但我需要做些什么才能在警报中看到回声的输出?
if($_POST )
{
$naam = addslashes(htmlentities($_POST['uitgevoerd_door_naam']));
echo $query = "UPDATE form SET uitgevoerd_door_naam='$naam' WHERE id='$_POST[business_id]'";
$mysqli->query($query);
}
$.ajax({
type : 'POST',
url : 'edit.php',
data : test+businessid,
success : function(test)
{
alert(test);
alert('Company modified');
},
error: function( jqXhr, textStatus, errorThrown ){
console.log( errorThrown );
}
});
}