2

我正在尝试使用 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

4 回答 4

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:

  • 使用prepared statements避免sql注入问题
  • 使用错误处理来查看问题所在
于 2012-04-25T20:05:52.363 回答
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)");
于 2012-04-25T20:10:34.677 回答
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);
    });
});
于 2012-04-25T20:05:44.830 回答
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);
      });
  });
});
于 2012-04-25T20:07:18.230 回答