我知道这是一个老问题,但我自己也一直在尝试向 validator.w3.org 创建 AJAX 请求,遇到完全相同的问题并偶然发现了这个 SO 问题。
但是,我确实找到了解决方案;
正如人们已经说过的,这里的主要问题是服务器必须发出有效的 CORS 标头,即
访问控制允许来源:*
我使用 Fiddler 检查来自 validator.w3.org 的响应标头,果然,标头没有设置。但是,他们在 validator.w3.org/nu/ 上还有另一个工具。
这是一个例子:http ://codepen.io/DDN-Shep/pen/ogdGgO/
$('form').on('submit', function(e) {
e.preventDefault();
var data = new FormData(this);
$.ajax({
url: 'http://validator.w3.org/nu/', // Trailing '/' is important or you get a 301 HTTP response status code
type: 'POST',
data: data,
processData: false, // Required for jQuery & FormData
contentType: false, // Set by FormData, required by the server
success: function(data, status, xhr) { /* TODO */ },
error: function(xhr, status, error) { /* TODO */ },
complete: function(xhr, status) { /* TODO */ }
});
});
如果您不确定服务器是否允许 CORS,您可以使用这个非常有用的在线工具;
test-cors.org = http://client.cors-api.appspot.com/client