2016-01-26 4 views
1

Я использую для программирования текстовый редактор скобок и я уже установил W3C валидатор, но он работает, пока я в сети, но оффлайн. Я пытаюсь установить https://validator.w3.org/docs/install.html, и я бегу к localhost: 8888, но расширение скобок добавляется только через ajax (javascript). Возможно ли отправить ajax как на исходный веб-сайт W3C?W3C Validator offline на localhost от ajax

ответ

1

Здесь хранитель HTML-проверки W3C (валидатор). Да, можно отправить запрос 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); 
    }) 
}); 

Это показывает основные шаги, чтобы следовать, чтобы доставить запрос в том, как средство проверки ожидает:

  • отправить документ на Проверка, как тело POST (в данном примере текущего документа)
  • сказать шашке форматировать свои результаты в формате JSON (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); 
     } 
    }); 
}); 

И если вместо того, чтобы либо fetch() или JQuery $.ajax(…) вы хотите использовать старую школу XHR, но это не ясно, как напишите подробности в этом случае, дайте мне знать, и я тоже могу привести пример этого.

Во всех случаях JSON выход .messages представляет собой массив объектов, каждый из которых содержит что-то вроде:

firstColumn: 1 
lastColumn: 6 
lastLine: 4 
message: "Unclosed element “span”." 
type: "error" 

The documentation for the checker JSON format дает более подробную информацию о формате JSON шашка излучающего.