在下面的函數中我有兩個post請求。一個用於在數據庫中插入值(submit.php),另一個用於基於businessid(edit.php)編輯數據庫中的現有值。但是,該腳本僅執行第一部分。也就是說,當選擇「keuze」並且點擊提交時,該腳本很好地插入到數據庫中。但是,如果選擇「keuze」以外的其他選項並單擊「提交」,腳本不會編輯數據庫中的記錄。我能做些什麼來解決這個問題?jquery ajax插入和編輯
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);
?>
edit.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("UPDATE form SET uitgevoerd_door_naam='$naam' WHERE id='$_POST[business_id]'");
}
mysqli_close($mysqli);
?>
你說過「不更新」。 'edit.php'文件是否觸發?您是否使用過瀏覽器的開發人員「網絡」選項卡來排除故障? AJAX呼叫會熄滅嗎? –
你很容易受到[sql注入攻擊](http://bobby-tables.com)的影響,並且你的編輯ajax調用失敗,因爲你正在傳遞'test + businessid'。 'test'似乎並不存在於你的代碼中,並且會產生一個數字/字符串,PHP不會將其識別爲'key = value'表單提交,而將$ _POST留空。 –
僅供參考,好的工作格式化您的代碼 - 它看起來不錯!你可能會考慮三件事情:雙線飼料只是創造開放空間,所以刪除雙線飼料 - 讓你的'if(){'格式一致 - 在一些地方它是在同一條線上,在一些地方'''本身就是一行 - 最後,不要在PHP文件的末尾使用'?>'。現在認爲最好的做法是在php文件末尾省略這些。 –