我有一个将一些数据保存在MySQL表中的表单,这样做之后,网站将重定向到index.php页面,我不想发生这种情况,我只希望它保留在同一页面中。
我有一些ajax传递表单值:
$("#incomeSave").click(function() {
alert("incomeSave");
$.ajax({
type:"POST",
url: "actions.php?action=incomeSave",
data: "date=" + $("#incomeDate").val() + "&value=" + $("#incomeValue").val() + "&category=" + $("#incomeCategory").val() + "&subcategory=" + $("#incomeSubCategory").val() + "&account=" + $("#incomeAccount").val() + "&description=" + $("#incomeDescription").val(),
success: function(result) {
alert(result);
}
})
})
然后执行查询:
if ($_GET['action'] == "incomeSave") {
if (!$_POST['value']) {
echo "Valor vazio";
} else {
mysqli_query($link, "INSERT INTO incomes (`user_id`,`income_date`,`income_value`,`income_category`,`income_subcategory`,`income_account`,`income_description`) VALUES ('1','". mysqli_real_escape_string($link, $_POST['date'])."','". mysqli_real_escape_string($link, $_POST['value'])."','". mysqli_real_escape_string($link, $_POST['category'])."','". mysqli_real_escape_string($link, $_POST['subcategory'])."','". mysqli_real_escape_string($link, $_POST['account'])."','". mysqli_real_escape_string($link, $_POST['description'])."')");
echo "After SQL";
}
}
我应该怎么做才能使页面不重定向到index.php?
最佳答案
如果您的HTML中有一个<form>
标记,则任何<button>
或<input type="button">
都会自动触发重新加载。为防止这种情况发生,您需要传递一个element
参数并调用.preventDefault()
方法。这是使用e
作为参数应该执行的操作:
$("#incomeSave").click(function(e){
e.preventDefault();
alert("incomeSave");
$.ajax({
type:"POST",
url: "actions.php?action=incomeSave",
data: "date=" + $("#incomeDate").val() + "&value=" + $("#incomeValue").val() + "&category=" + $("#incomeCategory").val() + "&subcategory=" + $("#incomeSubCategory").val() + "&account=" + $("#incomeAccount").val() + "&description=" + $("#incomeDescription").val(),
success: function(result){
alert(result);
}
});
});
另外,您的数据库可以进行SQL注入,请使用参数化语句!
关于php - MySQL查询后PHP无法重定向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43198042/