如何使用ajax在函数内调用medoo 1.5?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用ajax在函数内调用medoo 1.5?相关的知识,希望对你有一定的参考价值。

这是第一个问题。我想用ajax调用php函数。在函数内部,我有一个来自名称空间上的库的类。

我一直在使用medoo和0.9版本的PHP内部功能,一切都很好。我也使用与ajax调用相同的函数。

在我的function.php文件中,我有:

//if called from js with ajax I use a var in the link to know for ex. variable_from_js=1
if(isset($_GET['variable_from_js']){
  $response = my_function();
  echo $response;//i catch the response with js then
  exit;
}

//my function
function my_function(){
 $a = new Medoo(DB_NAME);//DB_NAME is a global
 ...
}

Medoo在版本> 1.2中使用名称空间以及许多其他库。当我直接调用my_function()时,我使用:

require 'Medoo.php';
require 'function.php';
use MedooMedoo;
echo my_function();

一切都很好。现在如果我调用相同的ajax调用,我会收到内部服务器错误,因为找不到类Medoo。

我无法使用代码:

use MedooMedoo;

在if语句内部或函数内部因为这些东西的局部范围。我应该在全球范围内称呼它。但我正在使用ajax调用。

我应该在function.php中再次写“use”语句还是应该在其他地方写呢?是否有解决方案或唯一的解决方案是摆脱“使用”语句并在调用类(内部函数)时使用完整的命名空间路径?

答案

你应该只在你的代码中调用一次Medoo,所以在php文件的顶部

require 'Medoo.php';
require 'function.php';
use MedooMedoo;
$db = new Medoo(DB_NAME);

然后将medoo类传递给您的函数,例如

echo my_function($db);

在你的函数中,你可以使用诸如的medoo

function my_function($db){
    $value = $db->get('...','...','...');
    return $value;
}

希望这可以帮助。

以上是关于如何使用ajax在函数内调用medoo 1.5?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Xampp 上的 SQLSRV 与 Medoo 一起使用?

Medoo和时区

非常易用的PHP数据库框架Medoo 2.1:使用 Medoo 连接MYSQL数据库

ajax不是命名空间内的函数

如何在循环内循环并通过 AJAX 调用对 JSON 对象的结果进行排序?

如何在函数外部获取ajax的返回值?