【发布时间】:2012-03-27 15:33:50
【问题描述】:
当我对 MediaWiki 框架中的 php 函数进行 AJAX 调用时,我在访问全局变量时遇到了麻烦。
我的 jQuery AJAX 调用如下所示:
jQuery.ajax({
url: 'GeneralFunctions.php',
type: 'GET',
dataType: 'json',
data: {
text: anchorText
},
success: function (data) {
alert("data: " + data);
}
});
我的 GeneralFunctions.php 文件如下所示:
<?php
if (isset($_GET['text'])) {
jsonInlineParse((string) $_GET['text']);
}
function jsonInlineParse($wikiText)
{
global $wgOut;
$return = $wgOut->parseInline($wikiText); //fails here
echo json_encode($return);
}
?>
当我通过单击事件运行 jQuery 调用时,我会到达 parseInline() 函数。全局变量从未在范围内定义,我得到错误:
致命错误:在 /path/to/file/GeneralFunctions.php 行 中的非对象上调用成员函数 parseInline() b>54
我不知道在进行 AJAX 调用时如何进行 parse 调用和定义全局变量?
更新
$wgOut 是与 MediaWiki 关联的 OutputPage 对象。它包含页面的所有 HTML,并在整个 MediaWiki 框架中用于向页面或文章添加内容。它在服务器端用于为 wiki 文章创建自定义输出。我用它在我们的许多 wiki 上创建表单或添加 HTML。
更多信息在这里:http://www.mediawiki.org/wiki/Manual:$wgOut
更新 2
@Juhana 我将我的函数更改为如下所示,这会导致与以前相同的错误。每个回显输出“NULL”。
<?php
function jsonInlineParse($wikiText)
{
include_once '/path/to/file/includes/OutputPage.php';
include_once '/path/to/file/includes/parser/Parser.php';
echo var_dump($wgOut);
global $wgOut;
echo var_dump($wgOut);
$return = $wgOut->parseInline($wikiText);
echo $return;
echo json_encode($return);
}
?>
【问题讨论】:
-
那么
$wgOut到底是什么? -
什么样的对象?向我们展示更多代码。
-
从 var_dump($wgOut) 发布输出;
-
您不会凭空自动获得 MediaWiki 变量。您必须包含定义它们的文件。您在 GeneralFunctions.php 文件中包含了哪些文件?
-
另外,虽然 OutputPage.php 定义了 OutputPage 类,但 $wgOut 变量实际上是在 /includes/Setup.php 中使用
$wgOut = RequestContext::getMain()->getOutput();行初始化的
标签: php jquery ajax global mediawiki