我是php新手并试图实现学校项目的小网页部分。 video.js文件中的reportBuffering方法应该使用Jquery ajax在server.php中调用bufferingEventLogger方法,并将传递的值存储在Database中。我无法触发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);
我已经遇到了类似的问题,但无法让它发挥作用。感谢
答案 0 :(得分:0)
调用bufferingEventLogger的唯一行已被注释掉。
你想只调用这个功能吗?如果是这样,只需取消注释该行。
如果要添加更多功能,可能需要使用类似switch语句的内容。
答案 1 :(得分:0)
@beating_around_abush你快到了!您现在正在做的是将函数名称从客户端传递到服务器(作为AJAX调用的一部分)。但是,在服务器端,数据作为字符串接收。您需要在服务器上执行的操作是获取该字符串值并将其转换为可调用的定义(在本例中为函数调用)。相反,在mysqli_close($link);
之前的PHP文件中专门添加对bufferingEventLogger()的调用。它确实意味着你必须重构函数定义,但这是一个快速的改变。