我用来编写Brackets文本编辑器,我已经安装了W3C验证器,但它在网上工作但不在线。我尝试安装https://validator.w3.org/docs/install.html并运行到localhost:8888但括号的扩展仅通过ajax(javascript)连接。是否可以像原来的W3C网站一样发送ajax?
答案 0 :(得分:1)
W3C HTML检查程序(验证程序)的维护者。是的,可以将ajax请求发送到当前检查器的本地实例。要使用Fetch执行此操作并获取JSON格式的结果:
var checkerUrl = "http://localhost:8888/?out=json"
fetch(document.location.href)
.then(function(currentDoc) { return currentDoc.text(); })
.then(function(htmlSource) {
fetch(
checkerUrl, {
method: "POST",
mode: "cors",
body: htmlSource,
headers: new Headers({ "Content-Type": "text/html;charset=utf-8" })
})
.then(function(checkerResponse) { return checkerResponse.json(); })
.then(function(jsonOutput) {
console.dir(jsonOutput.messages);
})
});
这显示了以检查程序期望的方式提供请求的基本步骤:
out=json
)text/html;charset=utf-8
发送给检查程序的POST正文的媒体类型检查器还支持multipart/form-data
为其提供要检查的HTML源代码,但是将其作为POST主体提供它是首选(并且更好)的方式。
如果不是使用fetch()
而是想使用JQuery $.ajax(…)
,那么这是一个例子:
var checkerUrl = "http://localhost:8888/?out=json"
$.get(document.location.href,
function(htmlSource)
{
$.ajax({
url: checkerUrl,
type: "POST",
crossDomain: true,
data: htmlSource,
contentType: "text/html;charset=utf-8",
dataType: "json",
success: function (jsonOutput) {
console.dir(jsonOutput.messages);
}
});
});
如果您想使用老式XHR而不是fetch()
或JQuery $.ajax(…)
,但是在这种情况下如何处理细节还不清楚,请告诉我,我可以发布一个示例那也是。
在所有情况下,.messages
JSON输出是一个对象数组,每个对象包含如下内容:
firstColumn: 1
lastColumn: 6
lastLine: 4
message: "Unclosed element “span”."
type: "error"
The documentation for the checker JSON format提供了检查程序发出的JSON的更多详细信息。