无法使用jQuery:ajax调用php函数

无法使用jQuery:ajax调用php函数,php,ajax,Php,Ajax,我是php新手,正在尝试实现学校项目的一个小网页部分。video.js文件中的reportBuffering方法应使用Jquery ajax调用server.php中的bufferingEventLogger方法,并将传递的值存储在数据库中。我无法触发bufferingEventLogger函数。下面是video.js的代码 var video; $(document).ready(function(){ var timeBuffered = 0; var timer; video =

我是php新手,正在尝试实现学校项目的一个小网页部分。video.js文件中的reportBuffering方法应使用Jquery ajax调用server.php中的bufferingEventLogger方法,并将传递的值存储在数据库中。我无法触发bufferingEventLogger函数。下面是video.js的代码

var video;
$(document).ready(function(){
var timeBuffered = 0;
var timer;
    video = $('#main-video')[0];
    video.play();
    $(video).on("play",function(){
    if(timer!=null)
        clearInterval(incrementBufferedTime);
    });
    $(video).on("waiting",function(){
    timer = setInterval(function(){
        incrementBufferedTime
    },1000);
    });
function incrementBufferedTime(){
    timeBuffered++;
    console.log("Buffered time"+timeBuffered);
    if(timeBuffered > 5){
        reportBuffering()
    }
}
function reportBuffering(){
    $.ajax({
      method: "POST",
      url: "server.php",
      data:{functionId:'bufferingEventLogger',val0:1,val1:'2016-04-18 16:37:01',val2:'2016-04-18 16:37:02'},
      success:function  (response) {
        console.log(response)
      }
    });
}
reportBuffering();
}))

下面的代码是针对server.php的

$id=$_POST['val0'];
$bufferStartTime=$_POST['val1'];
$bufferEndTime=$_POST['val2'];

//bufferingEventLogger($id,$bufferStartTime,$bufferEndTime);

function bufferingEventLogger($id,$bufferStartTime,$bufferEndTime){
$conn = mysqli_connect("localhost", "root", "", "metrics");
$sql = "INSERT INTO buffer_time(id,buffer_start,buffer_end) VALUES   $id,'$bufferStartTime','$bufferEndTime')";
echo 'entered';

if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

}


mysqli_close($link);
$id=$\u POST['val0'];
$bufferStartTime=$_POST['val1'];
$bufferEndTime=$_POST['val2'];
//bufferingEventLogger($id、$bufferStartTime、$bufferEndTime);
函数bufferingEventLogger($id、$bufferStartTime、$bufferEndTime){
$conn=mysqli_connect(“localhost”、“root”、“metrics”);
$sql=“插入缓冲区时间(id、缓冲区开始、缓冲区结束)值$id、$bufferStartTime’、$bufferEndTime’”;
回声“进入”;
if(mysqli_查询($conn,$sql)){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.
“.mysqli_Error($conn); } } mysqli_close($link);

我也遇到过类似的问题,但无法让它发挥作用。谢谢

调用bufferingEventLogger的唯一一行被注释掉了

是否只调用此函数?如果是这样,只需取消对该行的注释即可


如果您想添加更多函数,可能需要使用类似switch语句的语句。

@beating\u abush您就快到了!现在要做的是将函数名从客户端传递到服务器(作为AJAX调用的一部分)。但是,在服务器端,数据以字符串形式接收。您需要在服务器上执行的是获取该字符串值并将其转换为可调用的定义(在本例中为函数调用)。相反,在PHP文件中,就在
mysqli_close($link)之前添加对bufferingEventLogger()的调用。这确实意味着您必须重构函数定义,但这是一个快速的改变