使用AJAX插入记录而不是插入和刷新页面

时间:2012-04-25 20:02:20

标签: php jquery mysql ajax

我试图使用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());

4 个答案:

答案 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:

  • 使用预准备语句来避免SQL注入问题
  • 使用错误处理来查看错误

答案 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);
      });
  });
});