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();
}
});