我正在编写一个简单的实时搜索块插件。我通过API访问外部网站的资源,并显示与用户在输入时搜索内容的结果。我打算写一项将执行此操作的网络服务。我将作为ajax.call中的一个args之一传递用户输入,然后我的Web服务功能将返回建议的结果。我想知道使用Web服务是否需要使用Web服务,因为我没有检索或从Moodle数据库中返回任何数据,而我不想存储这些建议,而只是仅显示它们。
目前,我正在使用xmlhttprequest来调用我的插件中的内部PHP文件,该文件通过API连接并返回结果,但是我想知道是否有建议这样做的方法。
//the ajax call
ajax.call([{
methodname: 'block_xxxx_loadpages',
args: {userinput: userinput},}])
// the webservice function
class block_xxxx_external extends external_api {
//parameters
public static function loadpages() {
return new external_function_parameters (
array('userinput' => new external_value(PARAM_TEXT, 'the user input'))
);
}
//the function
public static function loadpages($userinput = 'userinput') {
//parameter validation
$params = self::validate_parameters(self::hello_world_parameters(),
array('userinput' => $userinput));
//connect to api and return the result page matching the userinput
return $result;
}
public static function loadpages_returns() {
return new external_value(PARM_TEXT, 'the result')
}
}
,除非您很好地处理异常和功能,否则对于每一个ajax呼叫,都不是必不可少的。您可以使用常规XML httprequest获取数据。