在脚本中调用时,MediaWiki原始api返回页面的旧版本

MediaWiki raw api returning old version of page when called in script

本文关键字:返回 版本 api 原始 脚本 调用 MediaWiki      更新时间:2023-09-26

我正在为MediaWiki编写todo扩展。我有一个文本框,通过使用"原始"操作调用API,将新项目的html/css插入到返回的原始页面中,然后用更新的版本替换页面的wikitext,来接收该项目并将其附加到页面。如果我访问浏览器中的URL

http://url/wiki/index.php?title="+pagetoappend+"&action=raw

我得到了当前页面的正确原始wikitext。然而,当我在JavaScript中调用它时:

$.get("http://url/wiki/index.php?title="+pagetoappend+"&action=raw")

它返回一个旧版本的页面,该页面还没有附加任何项目。这意味着每次我运行脚本时,它都会删除前一项并替换它,而不是将它附加到我的列表中。

我的JS似乎没有问题,因为我正在控制台中将JS调用返回的wikitext打印到API,它正在检索页面的"旧"版本。我试着在不改变行为的情况下清除页面。

是否有返回的API调用缓存或需要清除的内容?还有其他建议吗?

因此,虽然我没有弄清楚自己做错了什么,但我使用了以下内容:

$.get("http://url.com/wiki/api.php?page="+pagetoappend+"&action=parse&prop=wikitext&format=json")

然后为wikitext 解析JSON文件

var data = jsondata.parse.wikitext["*"];

问题没有完全解决,但至少避免了。

MediaWiki中的内部缓存往往会在适当的时候失效;很可能你的浏览器会缓存响应。您可以通过附加一个缓存断路器参数(或使用相应的jQuery参数(来防止这种情况的发生。

如果要追加到页面(或模板(的末尾,则更简单的方法是使用editneneneba API的appendtext参数。