问题描述
我是javascript和ajax的新手,我想调用php函数,该函数会在javascript文件中返回患者的年龄,因此我尝试探索有关此问题的答案,但我无法解决,这是名为get-patient-age.php的php文件:
function getPatientbyId($id) {
$q = DB::pdo()->prepare("SELECT p.birthday FROM patient AS p WHERE id_patient = :patient");
$q->bindValue(':patient',(int)$id,PDO::PARAM_INT);
$q->execute();
return $q->fetch(2);
}
这是我尝试使用ajax调用它的方式:
$.ajax({
type: "GET",url: 'get-patient-age.php',dataType: 'json',data: {functionname: 'getPatientbyId',arguments: 1},success: function (obj,textstatus) {
if( !('error' in obj) ) {
;
console.log(obj.result);
} else {
console.log(obj.error);
}
}
});
我得到200 ok作为答复,但总是空着,我错过了什么吗? 任何建议都可以帮助,谢谢。
解决方法
对Web服务器的AJAX请求执行的是PHP文件,而不是PHP函数。您的PHP文件定义了函数getPatientbyId
并且不执行它。您的PHP代码还需要调用函数,输出一个Content-Type
标头,指出响应中包含JSON,将函数的结果格式化为JSON,然后打印。
您无法使用JavaScript获得php的功能,只能回读服务器给您的返回值
在服务器端,您需要侦听get请求,如果它包含“ functionname”,则调用该函数并将返回值发送到页面
因此在PHP文件中
var isFunc = $_GET["functionname"]
var args = $_GET["arguments"]
if(isFunc== "getPatientbyId") echo getPatientbyId(args)