mediawiki 实现ajax请求及demo
时间: 2023-12-27 08:43:08 浏览: 167
MediaWiki 实现 AJAX 请求的步骤如下:
1. 在 `LocalSettings.php` 文件中添加以下代码开启 AJAX 支持:
```php
$wgAjaxExportList = array( 'myFunction' );
$wgUseAjax = true;
```
`$wgAjaxExportList` 数组中包含了可以被调用的函数名,这些函数将由 JavaScript 发送 AJAX 请求来执行。
2. 编写 AJAX 函数:
```php
function myFunction( $param ) {
// 处理参数
$result = "Hello, " . $param;
// 返回结果
return $result;
}
```
此函数接收一个参数 `$param`,处理后返回结果。
3. 编写 JavaScript 代码:
```javascript
$.ajax({
type: 'POST',
url: mw.util.wikiScript(),
data: {
action: 'ajax',
rs: 'myFunction',
rsargs: ['World']
},
dataType: 'json',
success: function( response ) {
console.log( response );
}
});
```
该代码使用 jQuery 发送 AJAX 请求,调用了 MediaWiki 中的 `myFunction` 函数,并传入了参数 `'World'`。成功后,控制台将输出结果。
以下是一个简单的 AJAX 请求示例:
```php
function myAjaxFunction( $param ) {
$result = "Hello, " . $param;
return $result;
}
$wgHooks['BeforePageDisplay'][] = function( $out ) {
$out->addScript( <<<JS
$(document).ready(function() {
$('#ajax-button').click(function() {
$.ajax({
type: 'POST',
url: mw.util.wikiScript(),
data: {
action: 'ajax',
rs: 'myAjaxFunction',
rsargs: ['World']
},
dataType: 'json',
success: function( response ) {
alert( response );
}
});
});
});
JS
);
return true;
};
$wgResourceModules['ext.myExtension'] = array(
'scripts' => array(
'js/myExtension.js',
),
'dependencies' => array(
'jquery',
'mediawiki.util',
),
);
```
此代码定义了一个 `myAjaxFunction` 函数,并添加了一个按钮,点击后将触发 AJAX 请求并弹出结果。同时,它还注册了一个资源模块 `ext.myExtension`,在其中包含了 `myExtension.js` 文件。该文件中包含了上述 JavaScript 代码。
阅读全文