Javascript jQuery AJAX调用PHP类函数

Javascript jQuery AJAX调用PHP类函数,javascript,php,jquery,ajax,function,Javascript,Php,Jquery,Ajax,Function,我写了一个用户操作分析,但是我不能执行我的insert-into语句。我尝试了stack上的所有建议,但发现了我的错误,我甚至没有得到一个错误:它在没有执行语句的情况下运行。我也有一个php连接-这工作正常,所以故障不存在。我想稍后插入操作变量,但首先我必须调用该函数。那么,我的请求或php函数有什么问题 jQuery $( document ).ready(function() { var action = ''; document.addEventListener('click',

我写了一个用户操作分析,但是我不能执行我的
insert-into
语句。我尝试了stack上的所有建议,但发现了我的错误,我甚至没有得到一个错误:它在没有执行语句的情况下运行。我也有一个php连接-这工作正常,所以故障不存在。我想稍后插入
操作
变量,但首先我必须调用该函数。那么,我的请求或php函数有什么问题

jQuery

$( document ).ready(function() {
  var action = '';
  document.addEventListener('click', function(e) {
    e = e || window.event;
    e = e.target || e.srcElement;
    if (e.nodeName === 'SECTION') {
      action = e.id;
      updateAction();
    }
  }, false);

  function updateAction() {
    $.ajax({
      type: "POST",
      url: '../actions/userAction.php',
      data: {action: 'test'},
      success: function(){
        console.log(action);
      }
    });
  }
});
PHP

<?php
class userAction
{
  /* User Action */
  public function updateAction(){
    if(isset($_POST['action']) && !empty($_POST['action'])) {
      $db = getDB();
      $st = $db->prepare("INSERT INTO user_analysis (action) VALUES ('bla') where userID = 1945");
      $st->execute();
      $db = null;
      $_SESSION['uid']=$uid;
      return true;
    }    else
    {
      return false;
    }
  }
}
?>


echo
if循环中
$\u POST['action']
的值……如果没有获取,请尝试将-type:“
POST
”更改为“
GET
”,

您需要使用
更新
而不是
插入
。请尝试以下代码:

UPDATE user_analysis SET action = 'bla' WHERE id = 1945

在哪里调用
updateAction()
方法?我想你没有。那你为什么期望它会执行呢?你至少有三种方法来处理它


1。将方法设为静态,并在不实例化类的情况下调用它

如果您没有任何理由构造类的对象,那么您可以调用您的方法而不必这样做。只需在类定义后添加这行代码:

userAction::updateAction()

这样,您就可以调用处理POST请求的方法

2。实例化类,然后调用方法

同上。这里的区别是首先构造一个对象:

$ua = new userAction();
$ua->updateAction();
3。(最简单的)去掉类和方法

正如标题所示。删除类的整个代码,只保留方法的主体。像这样:

if(isset($_POST['action']) && !empty($_POST['action'])) {
   $db = getDB();
   $st = $db->prepare("INSERT INTO user_analysis (action) VALUES ('bla') where userID = 1945");
   $st->execute();
   $db = null;
   $_SESSION['uid']=$uid;

   return true;
} else {
   return false;
}
这应该是文件的全部内容:一个条件

顺便说一句
1.您的查询无效。如果要更新行,需要使用
UPDATE
语句,而不是
INSERT

2.我建议你调用你的类
UserAction
(大写)。只是为了使其标准化和更直观
3.为什么要将jQuery与VanillaJS混合使用?使用jQuery并使用clear JS绑定事件。使其具有语义,并决定是否使用jQuery。
jQuery方式:

var action = '';
$(document).on('click', function(e) {
  e = e || window.event;
  e = e.target || e.srcElement;
  if (e.nodeName === 'SECTION') {
    action = e.id;
    updateAction();
  }
});



这就是全部。我希望我能帮上忙

为什么我不能调用我的php函数,他没有在数据库中插入首先检查你是否在这个函数中输入了
updateAction()
?如果输入,则检查您是否在post中获得值。而且查询错误
INSERT
命令不能有
WHERE
子句。如果您正在更新记录,请使用
UPDATE
Pankaj是的,这是一个错误,我认为我无法进入函数,并且在注释中出现语法错误。我的整个代码在哪里调用PHP函数
updateAction()
?尝试解决语法错误,并将类型更改为GETI,假设您忘记了
不幸的是没有,问题是没有得到任何错误,所以如果我可以调试它,但我认为这是一个语法错误,ajax调用是正确的还是错误的?
var action = '';
$(document).on('click', function(e) {
  e = e || window.event;
  e = e.target || e.srcElement;
  if (e.nodeName === 'SECTION') {
    action = e.id;
    updateAction();
  }
});