我试图使用AJAX和PHP更新我的数据库。我确信一切都是对的,只有我的页面刷新,并且没有插入我的表格。
的 HTML 的
<form id="salary-upd">
<input type="text" class="defaultText" id="monthly-income" name="monthly-income" title="What is your salary?">
<input type="submit" class="salary-upd-submit">
</form>
<div></div>
的 AJAX 的
// UPDATE INCOME
$(".salary-upd-submit").click(function() {
var elem = $(this);
$.post("update_salary.php", elem.parent("#salary-upd").serialize(), function(data) {
elem.next("div").html(data);
});
});
的 PHP 的
$uid = $_SESSION['oauth_id'];
$monthly_income = $_POST['monthly-income'];
#update Record
$query = mysql_query("SET `income` (user_id, monthly_income) VALUES ($uid, '$monthly_income')") or die(mysql_error());
尝试更新我的PHP,因为我认为它可能是......
$query = mysql_query("UPDATE `income` SET (user_id, monthly_income) VALUES ($uid, '$monthly_income')") or die(mysql_error());
答案 0 :(得分:1)
为了避免页面刷新,我建议将操作附加到表单提交处理程序并阻止默认的提交事件:
$("#salary-upd").on("submit", function(event) {
event.preventDefault();
var elem = $(this);
$.post("update_salary.php", $(this).serialize(), function(data) {
elem.next("div").html(data);
});
});
编辑:对于旧版本的jQuery,第一行是:
$("#salary-upd").submit(function(event) {
关于php:
答案 1 :(得分:1)
我认为其他人会解决您的JS方面的问题,但是您在脚本中传递给MySQL
的查询将无法解析。
尝试使用以下内容:
$sanitized_monthly_income = mysql_real_escape_string($_POST['monthly-income']);
mysql_query("INSERT INTO income (user_id, monthly_income) VALUES ('$uid', '$sanitized_monthly_income') ON DUPLICATE KEY UPDATE monthly_income = VALUES(monthly_income)");
答案 2 :(得分:0)
试试这个:
$(".salary-upd-submit").click(function (e) {
e.preventDefault();
var elem = $(this);
$.post("update_salary.php", elem.parent("#salary-upd").serialize(), function (data) {
elem.next("div").html(data);
});
});
答案 3 :(得分:0)
在dom完成加载之前,您是否点击了按钮?我会将文件中的功能包装好,以确保它只在dom完成加载后执行。
添加preventDefault以防止默认表单提交行为。另外,您可能无法注意到它是通过ajax重新加载的,因为整个页面都会被提交。
$(function(){
$(".salary-upd-submit").click(function(e) {
e.preventDefault(); //prevent default submit behavior.
var elem = $(this);
$.post("update_salary.php", elem.parent("#salary-upd").serialize(), function(data) {
elem.next("div").html(data);
});
});
});